为什么执行 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(); 从子类打印 202
2- 因为没有 obj.fun(); 子类中的方法它调用父方法,所以输出应该是 101
3- System.out.print(obj.data); 应该打印 202,因为该值在子类中被覆盖。
所以我认为输出是 202 101 202 但不是,你能解释一下为什么吗?