TestClass.main() を実行すると 202 202 101 が出力されるのはなぜですか??
class BaseClass
{
int data = 101;
public void print()
{
System.out.print(data + " ");
}
public void fun()
{
print();
}
}
class SubClass extends BaseClass
{
int data = 202;
public void print()
{
System.out.print(data + " ");
}
}
class TestClass
{
public static void main(String[] args)
{
BaseClass obj = new SubClass();
obj.print();
obj.fun();
System.out.print(obj.data);
}
}
OOP の知識が乏しいので、実行は次のようにする必要があると思います。
1- obj.print(); SubClass から 202 を出力します
2- obj.fun(); がないため サブクラスのメソッドは親メソッドを呼び出すため、出力は101になるはずです
3- System.out.print(obj.data); 値はサブクラスでオーバーライドされるため、202 を出力する必要があります。
出力は 202 101 202 になると思いますが、そうではありません。理由を説明していただけますか?