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();//call 1
obj.fun();// call 2
System.out.print(obj.data);//call2
}
}
所以我有一个父/子关系类和一个具有 call1、call2、call3 的测试类。
1:关于 call1 ,我的理由是,由于print()被子类覆盖,并且函数调用将打印正确的数据变量。这似乎是正确的,因为这就是正确的答案。
2:现在关于call2,由于fun只存在于父类中,所以调用会去那里,理想情况下应该调用父类的fun方法并输出父类的数据变量 。这不是正确答案,根据答案是子类的输出数据。
谁能向我解释一下,我的推理有什么问题?