読者です 読者をやめる 読者になる 読者になる

オーバーライド

オーバーライドについては、特にキーワード無く、クラスを継承して、メソッドを再定義するだけで有効になる・・・。

BaseClassの、

outputメソッドは、iとstrを出力する・・・。

DerivedClassの、

outputは、親クラスBaseClassのoutputでiとstrを出力した後、fとbを出力するように再定義してある・・・。

MainClassで、

BaseClassのbaseにBaseClassオブジェクトのインスタンスを入れて、setで10と"ABC"をセットし、output・・・。

今度はDerivedClassのderivedにDerivedClassオブジェクトのインスタンスを入れて、setで20と"XYZ"と1.23fとtrueをセットし、output・・・。

最後にBaseClassのoverrideにDerivedClassオブジェクトのインスタンスを入れて、set(この場合BaseClassのset)で100と"ABCDE"をセットして、output・・・。

i = 10, str = ABC

i = 20, str = XYZ
f = 1.23, b = true

i = 100, str = ABCDE
f = 0.0, b = false

最初はBaseClassのインスタンスなので、BaseClassのoutputでiとstrを出力・・・。
次はDerivedClassのインスタンスなので、DerivedClassのoutputでi, str, f, bを出力・・・。
最後はBaseClassの変数に入っているが、中身はDerivedClassインスタンスなので、DerivedClassのoutputでi, str, f, bを出力・・・。
しかし、setがBaseClassのものなので、iとstrしかセットされていない・・・。

Sample/MainClass.java at master · bg1bgst333/Sample · GitHub
Sample/BaseClass.java at master · bg1bgst333/Sample · GitHub
Sample/DerivedClass.java at master · bg1bgst333/Sample · GitHub