[英]How does the interface in anonymous inner class work?
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();
}
}
據我所知,我們無法實例化一個接口,那么這是怎么發生的呢?
通過聲明
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();
但你可以做上面提到的。
您不能實例化接口,但是您可以提供接口的實現接口的類的對象的引用,因此在代碼中您實現接口並創建該類的對象並提供該類的引用。
是的,請記住,您無法實例化抽象類或接口..
這是錯的:
MyInter mi = new MyInter();
但您必須已經讀過超類引用變量可以保存對子類對象的引用。
所以通過創造
MyInter mi=new MyInter(){
public void display() {
System.out.println("this is anonymous class1");
}
};
你正在創建一個對象,一個匿名對象,但是MyInter作為超類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.