请参考以下代码:
我不明白的是为什么方法
考虑以下代码:
public class A{
private int num;
public A(int n){
num = n;
}
public int getNum(){
return num;
}
public boolean f(A a){
return num == a.num * 2;
}
}
public class B extends A {
public B(int n) {
super(n);
}
public boolean f(B b) {
return getNum() == b.getNum();
}
}
public class Main
{
public static void main(String[] args){
A y1 = new B(10);
B y2 = new B(10);
System.out.println("y1.f(y2) is: "+y1.f(y2));
}
}
我不明白的是为什么方法
f
在类 A
中运行(并且打印 false),而不是在类 B
中运行,因为在运行时 y1
的类型是 B
,应该向下执行到类 B
中的方法 f
?
C
对象?我猜它是 A 的另一个子类,但在任何地方都没有显示。 - Dan Templez1
和z2
没有被使用,它们是无关紧要的(应该从问题中删除)。 - Jon Skeet