実践 Java「クラス継承の実装例」

未分類

この記事の概要

実行結果と実コードを説明します。
実コードの実コードのコメントと画面出力内容を見れば、分かるような記載としています。

■クラス概要

クラス名説明
MainBクラスをnewし、定義している3メソッドを実行
BAクラスを継承したクラス
 ・Overrideしたメソッドを実装
 ・新規メソッドをを実装
ABクラスで継承するクラス
 ・Bクラスが側で Overrideしないメソッド
 ・ Bクラスが側で Overrideするメソッド

■確認ポイント
・A、Bのコンストラクターの実行順序
・BクラスでオーバライドしていないAクラスのメソッドが動作すること
・Bクラスでオーバライドしたメソッドが動作すること
・Bクラスのみで定義されたメソッドが動作すること

実行結果と実装と考察

すべての実行結果について、なぜそのような結果になるのか説明します。

■実行結果
========
Aクラスの引数なしコンストラクター
Bクラスの引数なしコンストラクター
========
【説明】
引数なしのコンストラクターをAクラス、Bクラスで明示していますが、
結果の通りBクラスをインスタンス化した時に、まずは、
「継承しているAクラスのコンストラクター」が実行され
「Bクラスのコンストラクター」が実行される。

■実行結果
========
① Aクラスのtestメソッド
========
【説明】
b.testで実行しているが、Bクラスではtestメソッドを実装していない
Aクラスを継承しているため、Aクラスで定義されたtestメソッドが動作している

■実行結果
========
② Bクラスでtest2メソッドをOverride
========
【説明】
BクラスでAクラスでも定義されているtest2メソッドをOverrideしているため、
Bクラス側の定義が実行されている
※「Override」のオーバーライドのアノテーションは記載がなくても同じ動作となるが
記載すべき。明示的にオーバーライドしているため、メソッド名を誤り、オーバライド
できていなかった場合にビルドエラーとなってくれるため。

■実行結果
========
③ Bクラスでtest3メソッドを定義、Aクラスには存在しない
========
【説明】
Aクラスに存在しないBクラスのtest3メソッドの定義が動作

タイトルとURLをコピーしました