關於Java內部接口的一個問題

關於Java內部接口的一個問題

比如:
class A{
    public interface I1{
        void func();
    }
}

class B{
    public static interface I2{
        void func();
    }
}

請問I1和I2有什麼區, 也就是靜態內部接口與非靜態內部接口有什麼區別?

問題補充:
lovewhzlq 寫道
對於I1來說,你要使用它的接口,必須先有A的實例

對於I2來說,直接B.I2就能使用了


樓上說的是適用於內部類和嵌套類的情況, 但內部接口卻不是如此, 看下面的例子:
class TestClass {
public interface I1 {
void Test();
}

public static interface I2 {
void Test2();
}
};

class IImpl implements TestClass.I1 {

@Override
public void Test() {
System.out.print("IImpl Test");
}
}

class IImpl2 implements TestClass.I2 {

@Override
public void Test2() {
System.out.print("IImp2 Test");
}
}

public class MyTest {

/**
* @param args
*/
public static void main(String[] args) {
TestClass.I1 i = new IImpl();
i.Test();

TestClass.I2 i2 = new IImpl2();
i2.Test2();
}

}

無論接口有沒有Static, 都可以正常被實現.


內部接口本來就是靜態對象,無需用static關鍵字申明。

發佈了11 篇原創文章 · 獲贊 4 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章