gpt4 book ai didi

java - Java中向下转型类与向下转型接口(interface)的区别?

转载 作者:行者123 更新时间:2023-12-02 04:13:52 25 4
gpt4 key购买 nike

为什么我们可以像这样从 super 类向下转换为子类:

Object o = getStringObject();
String str = (String) o;

然后使用相同的原理将接口(interface) DOWN 转换为子类型 E.G.?

InterfaceType anInterface;
anInterface = (InterfaceType) SubClassVar;

所以示例 1 一切都很好。我不明白的是,如果一个接口(interface)是实现它的类的父类(super class)型,那么当我们将类向下转换为接口(interface)时,如果在层次结构中接口(interface)更高,我们如何不会出现 ClassCastException ?我在某处读到,通过类和接口(interface)进行转换之间存在差异,但他们当然不想解释原因,所以我没有公开。谢谢,堆栈!

最佳答案

从技术上讲,您向上转换为该接口(interface),因为它在层次结构中比该接口(interface)的(假定的?)实现者 SubClassVar 更高。此外,甚至不需要强制转换,因为无论如何都可以根据该接口(interface)来讨论接口(interface)的实现,而无需强制转换语法。

可以向下转换接口(interface),就像对子类所做的那样。这是一个例子:

interface I1 {}
interface I2 extends I1 {}

class I2Impl implements I2 {}

class Main {
public static void main(String[] args) {
I1 test = new I2Impl();
I2 test2 = (I2)test;
I2Impl test3 = (I2Impl) test2;
}
}

关于java - Java中向下转型类与向下转型接口(interface)的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33528454/

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