2016-09-23 73 views
0

我搜索了谷歌,但找不到一個具體的例子,清除了我的懷疑。假設我有一個嵌套接口的父接口。當實現父接口聲明一個嵌套接口時會發生什麼

E.g

public interface A { 
    .. methods 

    interface B { 
     .. methods 
    } 
} 

如果一個類實現了接口A,會發生什麼情況,是否在內部類實現嵌套的界面B2以及,這意味着我應該重寫接口B的方法嗎?

+1

你可以通過在嵌套接口中聲明一個方法來試試:) – TheLostMind

+0

@TheLostMind - 嘿,謝謝,這裏的問題是我需要一個快速的答案,目前我也沒有資源在實際中嘗試這個問題。如果萬一,我反正會嘗試使用代碼,一旦我到達家裏。謝謝 –

回答

0

編號 必須實施內部接口。如果你只實現,你的罰款,只有聲明的方法,無需接口B方法

語法將

Class C implements A, A.B{ 
// add methods here 
} 

+0

嘿謝謝,救了我從一個混亂的情況。 –

+0

我不會說「內部接口必須實現」,而是「如果你想使用內部接口,你需要自己實現它。」因爲你可以獨立使用這兩個接口。 – Jhonny007

+0

@ Jhonny007 - 注意!謝謝 :) –

2

由於接口沒有實現方法,所以當外部接口實現時,不需要實現嵌套接口。
內部接口更像是位於外部接口名稱空間中的接口。

綜上所述:接口與彼此沒有任何關係,您可以處理它們,因爲您可以使用兩個獨立的接口。唯一的關係是你只能通過調用A.instanceofB.method();來使用接口B.

接口:

interface OuterInterface { 
    String getHello(); 

    interface InnerInterface { 
     String getWorld(); 
    } 
} 

實施例:

static class OuterInterfaceImpl implements OuterInterface { 
    public String getHello() { return "Hello";} 
} 

public static void main(String args[]) { 
    new OuterInterfaceImpl().getHello(); // no problem here 
} 

實施例2:

static class InnterInterfaceImpl implements OuterInterface.InnerInterface { 
    public String getWorld() { return "World";} 
} 

public static void main(String args[]) { 
    new InnerInterfaceImpl().getWorld(); // no problem here 
} 

實施例3:

static class OuterInterfaceImpl implements OuterInterface { 
    public String getHello() { return "Hello"; } 

    static class InnerInterfaceImpl implements InnerInterface { 
     public String getWorld() { return "World!"; } 
    } 
} 

public static void main(String[] args) { 
    OuterInterface oi = new OuterInterfaceImpl(); 
    OuterInterface.InnerInterface ii = new OuterInterfaceImpl.InnerInterfaceImpl(); 
    System.out.println(oi.getHello() + " " + ii.getWorld()); 
} 
0

基本上,在一個接口中,除了方法聲明以外的任何東西都是公共靜態的。任何靜態的東西都不能被繼承。所以,一個嵌套的接口必須分開實施。