【Java】継承と言われても・・・
継承といわれても
継承と言われたらある程度イメージはつくと思います。 私自身も雰囲気はわかっていました。
言葉通り継承するんでしょ?と・・・
甘かったです・・・
とりあえず"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クラスも引っ付いてくると思っていたため 簡単にオーバーライドできると勘違いしていました。 継承しているからこそ、オーバーライドされるという浅はかな思考です・・・
本で納得することと実際にコードを動かすことは大きな差だと実感
本当にこの矢印の方向の理解が大切!!
❌親クラス→子クラス
⭕️子クラス→親クラス