2014-11-14 41 views
1

接口提供100%抽象它具有沒有實現的方法來實現抽象行爲 但在這裏我有一個例子迫使我想到接口的抽象能力。具有內部類的接口可以影響接口的抽象接口 - OOP

我有接口和類裏面,它有具體的方法,我可以訪問該方法在另一個類中

實施例: -

interface InnerInterFaceTest1 { 
    class InnerClass { 
     public void doWork() { 
      System.out.println("in interface innner class"); 
     } 
    } 
} 
public class InnerInterFaceTest implements InnerInterFaceTest1 { 
    public static void main(String... a) { 
     InnerInterFaceTest1.InnerClass class1 = new InnerInterFaceTest1.InnerClass() ; 
     class1.doWork(); 
    } 
} 

具有內部類執行此接口的概念? ??或者什麼是有道理的?

回答

1

JLS限定了嵌套類,如下所示:

嵌套類是任何類,其聲明另一個類或接口的主體內發生。

請注意,在接口中聲明的嵌套類隱式爲publicstatic

所以這實際上不是內部類,而是更多的打包或嵌套在另一個頂級類型的頂級類。

1

interface中的類聲明隱含地爲static,所以它們是嵌套類,但不是真正的內部類,即它們的實例不涉及外部interface的實例。

所以,你有一個具體的class InnerInterFaceTest1.InnerClass其中有着怎樣的名字空間關係到interface InnerInterFaceTest1,但是,沒有其他後果抽象,專爲您的問題,interface不因存在變得不那麼抽象嵌套類。例如,如果有人創建了一個頂級課程並將其命名爲InnerInterFaceTest1_InnerClass,那就沒有什麼不同了。

1

接口的類的實例通知的Java編譯器把這個類作爲接口, 所以,Java編譯器的數據成員,並沒有別的之前的接口方法和公共的,靜態的和final關鍵字前加上公共的和抽象的關鍵詞。

所以,如果在接口類中編寫子類與在類中編寫子類相同。

根據這個理論,你可以做每個過程的子類,你可以做普通類。