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();
}
}
不,c
与 b
相同。事实上,它们指向同一个对象,类型为 Golden
。您只需通过 Apple
引用选择 "view" 对象,但实际类型不会改变。
打印输出为:水果 苹果 金的 金色
我想知道为什么对象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();
}
}
不,c
与 b
相同。事实上,它们指向同一个对象,类型为 Golden
。您只需通过 Apple
引用选择 "view" 对象,但实际类型不会改变。