5 回答
TA贡献1863条经验 获得超2个赞
在 Java 中有一个 和 的概念。上嵌意味着转换为超类型,而下嵌意味着转换为子类型。upcasting
downcasting
每当有关系时,你都可以毫无伤害地进行升级。但需要注意的是低调。Is-A
例如,您有 和 因为 两者 都是 类,因此 People 数组可以存储这两个。现在,当你做编译器不知道它实际上是员工,因为有相等的概率,可以经理作为经理类也扩展了人。因此,您需要显式提供一个强制转换,告诉编译器您知道自己在做什么,并且无需给出任何编译错误。但是,如果在运行时出现任何问题,则将抛出a。People array
Employee
Manager
extends
People
Employee ref2 = people[1];
ClassCastException
TA贡献1830条经验 获得超9个赞
它不是在没有强制转换的情况下编译的,因为编译器不知道它是 .people[1]
Employee
来自 Java 教程。铸造对象:
我们可以告诉编译器,我们承诺通过显式转换来分配给它。
Employee
people[1]
此强制转换将插入一个分配了 的运行时检查,以便编译器可以安全地假定 该检查是 。如果不是 在运行时,将引发异常。
people[1]
Employee
people[1]
Employee
people[1]
Employee
查看更多 Java 中的强制转换变量
TA贡献1828条经验 获得超3个赞
变量的类型为 。 ( - 实例也可以是扩展的子项 )。people
Person
Person[] people = Person[5];
type[] people = new instance
type
这里编译器看到,你需要说在编译器它也可以(导致扩展)通过转换。Employee ref2 = people[1];
people
Person
Employee
Employee
Person
你可以阅读更多,关于这个主题,在这里: https://www.baeldung.com/java-type-casting
TA贡献1854条经验 获得超8个赞
变量的类型为 。 ( - 实例也可以是扩展的子项 )。people
Person
Person[] people = Person[5];
type[] people = new instance
type
这里编译器看到,你需要说在编译器它也可以(导致扩展)通过转换。Employee ref2 = people[1];
people
Person
Employee
Employee
Person
你可以阅读更多,关于这个主题,在这里: https://www.baeldung.com/java-type-casting
添加回答
举报