gpt4 book ai didi

Java 将子对象强制转换为父对象

转载 作者:搜寻专家 更新时间:2023-11-01 01:10:05 25 4
gpt4 key购买 nike

Lion 类扩展了 Animal。

这是我的代码:

Animal a = new Animal();
Lion b = new Lion();
Animal c = (Animal) b;

Animal[] arr = { a, b, c };

for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i].getClass().getName());
arr[i].run();
}

结果是:

test2.Animal

Animal Run...

test2.Lion

Lion Run...

test2.Lion

Lion Run...

从这个例子来看,“c”似乎是一只“Lion”,而不是“Animal”。为什么会这样?

最佳答案

From the example seems that "c" is a "Lion", not an "Animal". Why is that happening?

因为c 一只狮子:

Lion b = new Lion();   // Creates a Lion
Animal c = (Animal) b; // Refers to the Lion through an Animal variable

现在,c 是一个Animal 类型的对Lion 对象的引用。该对象仍然是 Lion,只是对它的引用仅限于 Animal 内容。所以当你问那个对象它的类是什么时(不是你的 interfacec 变量/数组中的第三个条目中),它告诉你它是一个 狮子

这正是这种情况:

Map m = new HashMap();

m 引用类型为 Map,因此您只能使用它来访问 Map 接口(interface)定义的内容,但是 object 它指的是 HashMap 实例。

关于Java 将子对象强制转换为父对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28479811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com