爲什麼TestClass.main()的輸出執行202 202 101?執行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);
}
}
隨着我那可憐的OOP知識,我想執行必須是這樣的:
1- obj.print();從子類打印202
2-因爲沒有obj.fun();方法在子類中調用父方法,所以輸出應該是101
3- System.out.print(obj.data);應該打印202,因爲該值在子類中被覆蓋。
所以我認爲輸出將是202 101 202但它不是,你能解釋我爲什麼嗎?
現在我明白了,謝謝Binyamin。我會盡快給你答覆 –