簡體   English   中英

匿名內部類中的接口如何工作?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM