Java訓練#17(スーパークラス・サブクラス)
今日の授業
今日は前回の復習と新しくスーパークラスとサブクラスについて学びました。
スーパークラスとサブクラス
今までは情報クラスと実行クラスを作ってました。
今度は情報クラスをもう一つ作ります。一つの情報クラスをもとにもう一つ情報クラスを作ることを「 拡張 」といいます。
拡張してできた新しいクラスを「 サブクラス 」と呼び、拡張もとのクラスを「 スーパークラス 」と呼びます。
サブクラスからみたスーパークラスは1つしか存在しません。しかし、サブクラスは何個でも作る事ができます。
スーパークラスとサブクラスの2つのクラスをの関係を表すコードがあります。
それは「 extends 」です。
これを、サブクラスのクラス宣言部分に記述します。例えば、スーパークラス名が「Mother」、サブクラス名が「Son」だとします。この2つをつなぐコードは以下ようになります。
class Son extends Mother {
そしてこのコードは「Son」のファイルで書きます。
継承
スーパークラスの「 フィールドとメソッド 」はサブクラスに受け継がれます。なのでサブクラスでは実際にコードは書かれていなくても、フィールドとメソッドは存在しています。
しかし、コンストラクタは継承されません。
コンストラクタ
スーパークラスのコンストラクタを呼び出す為のコードがあります。それは「 super(実引数); 」です。()カッコの中の実引数を、スーパークラスのフィールドに代入する事ができます。
コンストラクタを引数無しで書いた場合は、スーパークラスの引数無しのコンストラクタが呼び出されます。
例: 実行結果が以下になるようなプログラムを作成します。
母の名前は美代子です
年齢は37歳です
息子の名前はとしくんです
年齢は5歳です
まず、スーパークラス Mather を作ります。
//フィールド
String type;
String name;
int age;
//引数なしのコンストラクタ
Mather() {
this.type = “母”;
this.name = “美代子”;
this.age = 37;
}
//メソッド
void show() {
System.out.println(type + “の名前は” + name + “です”);
System.out.println(“年齢は” + age + “歳です”);
}
次はサブクラス Son を作ります。extends Mather でつないで下さい。
class Son extends Mother {
Son(String t, String n, int a) {
type = t;
name = n;
age = a;
}
最後に実行クラス Exe を作成します。
Mother mother = new Son();
Son son = new Son(“息子”,“としくん”, 5);
mother.show();
son.show();
以上です。
Matherクラスのフィールドとメソッドは継承されるので Sonクラスにはコンストラクタしか書きませんでした。
このように同じ様な事を書かないといけないプログラムなら「 継承 」を使えば簡単で見やすいプログラムが書けます。
公共職業訓練を受講する為に必要な事を下の記事で書いてます。
良かったらご覧下さい↓↓↓
おまけ : オーバーライド
オーバーライドとは、継承したフィールドやメソッドを変更する事を言います。
オーバーライドするには「 @Override 」というコードを使います。この後に変更したいフィールドやメソッドを全く同じに書けばそれが変更されます。
例
Matherクラス
void show(){
処理
}
Sonクラス
@Override
void show() {
Matherクラスのものとは別の処理
}
このように書くとSonクラスの物になるのでこのメソッドを呼び出すときはSonクラスの「インスタンス名.メソッド名」で呼び出せます。
今日習った事はこんな感じでした。
最後まで読んで頂きありがとうございました。
少しでも勉強になった、役に立ったと思ったら「 サポート」 で貴方のお気持ちを頂けると嬉しいです。
今後の励みにもなります。是非よろしくお願いします。
この記事が気に入ったらサポートをしてみませんか?