Java downcast对象调用sub方法

时间:2017-04-05 13:00:33

标签: java downcast

打印输出是:水果                  苹果                  金色                  金

我想知道为什么对象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();               
        }



}

1 个答案:

答案 0 :(得分:2)

不,cb相同。实际上,它们指向同一个确切的对象,类型为Golden。你只需选择"查看"该对象通过Apple引用,但实际类型不会更改。