接口之间的转换

uml*_*uml 5 java casting interface

我的问题与Java语言有关。这就是我得到的:

interface I1{}
interface I2{}
class C1 implements I1{}
class C3 extends C1 implements I2{}
Run Code Online (Sandbox Code Playgroud)

什么时候

     C1 01;
     C3 o3;
     I1 i1;
Run Code Online (Sandbox Code Playgroud)

ETC

现在事实证明这I2 i2 = (I2) i1;是正确的,因为在运行时 i1 实际上引用了实现 I2 的对象。但我不明白。接口之间没有任何关系,那么如何将其转换为相邻接口呢?没有更多的代码,只是为了准备 Java 认证而进行的演练。此致

JB *_*zet 3

I2 i2 = (I2) i1;意思是:我知道所引用的对象的具体运行时类型实现了i1I2接口,因此我想将其引用为I2. 如果 的具体运行时类型i1确实实现了I2,则转换将会成功。

事实上,I1I2没有任何共同点并不重要。重要的是 引用的对象的实际具体运行时类型i1