見出し画像

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クラスの「インスタンス名.メソッド名」で呼び出せます。

今日習った事はこんな感じでした。

最後まで読んで頂きありがとうございました。
少しでも勉強になった、役に立ったと思ったら「 サポート」 で貴方のお気持ちを頂けると嬉しいです。
今後の励みにもなります。是非よろしくお願いします。

この記事が気に入ったらサポートをしてみませんか?