为什么界面允许所有类?
例如,我有以下代码:
interface I1 { }
class C1 { }
public class Test{
public static void main(String args[]){
C1 o1 = new C1();
I1 x = (I1)o1; //compiler compile its successfully but failed in run time
}
}
Run Code Online (Sandbox Code Playgroud)
我知道为什么它在运行时失败,因为C1类没有实现I1接口.如果C1类实现I1,那么上面的代码将成功运行.
有人可以解释为什么界面允许所有类投射?
可能有一个
class C2 extends C1 implements I1 { ... }
Run Code Online (Sandbox Code Playgroud)
可以分配此类的对象, o1并且在运行时也可以完全正确.