- 先挂起测试代码
public class Demo1_1 {
public static Demo1_1 create(Class clazz){
return new Demo1_1();
}
public Demo1_1 create(){
return new Demo1_1();
}
public static Demo1_1 create2(){
return new Demo1_1();
}
}
public class Demo1 {
private interface inner{
}
public static void main(String[] args) {
Demo1_1 demo1_1=new Demo1_1();
inner instance=(inner) Demo1_1.create(inner.class);
}
}
发现这这个代码编译居然没有报错(运行起来肯定是报错了)。
然后,将第一段代码中的内部接口(接口是内部类还是外部类没啥关系)换成class。如下图所示:
编译终于报错了。
2. 原来,在java中类是单继承的,而接口是多继承的。编译器是无法判断对象是否实现了某个接口,但是知道继承了哪个类。