我很难理解为什么对派生类的变量引用在转换后仍会调用派生方法。
// Base class :
public class A{
public void f(){System.out.println("A")};
public void f(A other){System.out.println("AA")};
}
// Derived class :
public class D extends A{
public void f(){System.out.println("D")};
public void f(A other){System.out.println("DD")};
}
// Main method :
public static main(String[] args){
D D1 = new D();
A D2 = (A) D1; // Upcast
D2.f(D1)
}
在终端中打印结果: DD
结果是DD 我不明白为什么它不是AA,D2不应转换为A类?