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