为什么派生类的方法是调用而不是强制转换的方法?

时间:2019-05-14 16:56:17

标签: java class casting

我很难理解为什么对派生类的变量引用在转换后仍会调用派生方法。

// 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类?

0 个答案:

没有答案