打印输出是:水果 苹果 金色 金
我想知道为什么对象c.make()
在class Golden
而不是class Apple
中调用方法。因为我认为c是Apple类的对象,我的错误在哪里?谢谢你的考虑。
public class Fruit {
public Fruit(){
System.out.println("Fruit");
}
public void make(){
System.out.println("Fruit");
}
}
class Apple extends Fruit{
public Apple(){
System.out.println("Apple");
}
public void make(){
System.out.println("Apple");
}
}
class Golden extends Apple{
public Golden(){
System.out.println("Golden");
}
public void make(){
System.out.println("Golden");
}
}
public class tet {
public static void main(String[] args){
Fruit b = new Golden();//Fruit Apple Golden
Apple c = (Apple)b;
c.make();
}
}
答案 0 :(得分:2)
不,c
与b
相同。实际上,它们指向同一个确切的对象,类型为Golden
。你只需选择"查看"该对象通过Apple
引用,但实际类型不会更改。