interface MyInter {
public void display();
}
class OuterClass8 {
public static void main(String arg[]) {
MyInter mi=new MyInter() {
public void display() {
System.out.println("this is anonymous class1");
}
};
mi.display();
}
}
据我所知,我们无法实例化接口,那么这是怎么发生的呢?
答案 0 :(得分:3)
宣布
MyInter mi=new MyInter(){
public void display() {
System.out.println("this is anonymous class1");
}
};
您正在声明一个实现MyInter
接口的匿名内部类。这与做
public class MyInterImpl implements MyInter {
public void display() {
System.out.println("this is anonymous class1");
}
}
并创建实例
MyInterImpl mi = new MyInterImpl();
但你是匿名的。
您认为无法实例化接口是正确的。你做不到
MyInter mi = new MyInter();
但你可以做上面提到的。
答案 1 :(得分:3)
您无法实例化接口,但您可以提供接口的实现接口的实现接口的引用,因此在代码中您实现接口并创建该类的对象并提供该类的引用。 / p>
答案 2 :(得分:2)
是的,请记住,您无法实例化抽象类或接口..
这是错误的:
MyInter mi = new MyInter();
但你必须读过超类引用变量可以保存对子类对象的引用。
所以通过创建
MyInter mi=new MyInter(){
public void display() {
System.out.println("this is anonymous class1");
}
};
你正在创建一个对象,一个匿名对象,但是MyInter作为超类...