MENU

【Java】継承と言われても・・・

f:id:kiserukun:20210611090227p:plain

継承といわれても

継承と言われたらある程度イメージはつくと思います。 私自身も雰囲気はわかっていました。

言葉通り継承するんでしょ?と・・・

甘かったです・・・

とりあえず"extends"をつければなんとかなるだろう

付け足したい処理を"extends"側に書けば解決るするでしょ?と思っていました。

始めのイメージ

public class Blog {

 Janru ja = new Janru();
   
 public static void main(String[] args) {
        Blog blog = new Blog();
        blog.exec();
    }
 
 public void exec() {
  ja.display();
 }
}
public class Janru {
    public void display(){
        System.out.println("ジャンルのページです");
    }
}
public class Baseball extends Janru {
    public void display() {
        System.out.println("野球のページです");
    }
}

1.extendsをつける
2.メソッド名を合わせる

そうすればオーバーライドとかいう上書きがされるはずだと・・・

しかし結果は

>ジャンルのページです

   
 

半日以上経ちましたが"エラー"か"ジャンルのページです"  
しか表示できませんでした。

表示に成功

試行錯誤の中、なんとか表示させることができました。 以下のように記述を変更しました。

Janru ja = new Janru(); → Janru ja = new Baseball();

実行すると  

>野球のページです

表示できました!

あとがき

"extends"をつければBaseballクラスも引っ付いてくると思っていたため 簡単にオーバーライドできると勘違いしていました。 継承しているからこそ、オーバーライドされるという浅はかな思考です・・・

本で納得することと実際にコードを動かすことは大きな差だと実感

本当にこの矢印の方向の理解が大切!!

❌親クラス→子クラス

⭕️子クラス→親クラス