我有这个例子,我不明白为什么java允许使用没有实现它的接口来构建obj.
public interface Interface { public void whoIam(); } public class SuperClass { } public class SubClass extends SuperClass implements Interface { public void whoIam() { System.out.println("I M a SubClass"); } public static void main(String[] args) { SuperClass a = new SubClass(); Interface b = new SubClass(); Interface c = (Interface) new SuperClass(); c.whoIam(); }
下面的这一行不应该编译,因为SuperClass没有实现接口:
Interface c = (Interface) new SuperClass();
它将生成"java.lang.ClassCastException:"
所以,我认为有一个原因,编译器允许这一行.
我想知道什么时候我们可以在没有实现它的情况下使用接口转换obj.
Thxs