なぜTestClass.main()の実行は202 202 101を出力しますか?私の貧弱なOOPの知識を持つOOPの継承の実行
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);
}
}
私は実行がこの方法でなければならないと思う:)
の1- obj.print(; SubClassから202をプリントする
2 obj.fun()が存在しないので、メソッドは親メソッドを呼び出すので、出力は101
3 System.out.print(obj.data);サブクラスで値がオーバーライドされているので、202を出力する必要があります。
だから出力は202 101 202だと思うけど、それはなぜなのか説明できますか?
これで、Binyaminに感謝します。できるだけ早くあなたの答えに印をつけます –