Java 向下转换对象调用子方法

Java downcast objects invoking sub method

打印输出为:水果 苹果 金的 金色

我想知道为什么对象c.make()调用了class Golden中的方法而不是class Apple。因为我认为c是classApple的对象,我的错误在哪里?感谢您的考虑。

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();               
        }



}

不,cb 相同。事实上,它们指向同一个对象,类型为 Golden。您只需通过 Apple 引用选择 "view" 对象,但实际类型不会改变。