2016-09-23 5 views
0

私はGoogleを検索しましたが、私の疑念を解消する具体的な例は見つかりませんでした。ネストされたインターフェイスを持つ親インターフェイスがあるとします。例えばネストされたインターフェイスを宣言する親インターフェイスを実装するとどうなります

public interface A { 
    .. methods 

    interface B { 
     .. methods 
    } 
} 

クラスは、インタフェースAを実装している場合

、何が起こるか、そのクラスは内部手段が、私はあまりにも、インタフェースBのメソッドをオーバーライドすることになっていますということだけでなく、ネストされたインタフェースBを実装していますか?

+1

ネストされたインターフェイスでメソッドを宣言することで試してみることができます:) – TheLostMind

+0

@TheLostMind - ありがとう、ここでの問題は私は簡単な答えが必要です、また現在私は実用的な問題を試すリソースがありません。場合は、私はとにかく私は家に到達した後にコードを使用しようとしています。ありがとう –

答えて

0

No. 内部インターフェイスを実装する必要があります。

構文は、あなただけ実装する場合は、B・インタフェース・メソッドなしAのメソッドを宣言すると罰金です

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

だろう。

+0

こんにちは、感謝、混乱状況から私を救った。 –

+0

私は「内部インターフェイスを実装する必要があります」とは言いませんが、「内部インターフェイスを使用する場合は、自分で実装する必要があります。両方のインターフェイスを個別に使用できるためです。 – Jhonny007

+0

@ Jhonny007 - 注目!ありがとう:) –

2

インターフェイスにはメソッドが実装されていないため、外部インターフェイスの実装時にネストされたインターフェイスを実装する必要はありません。
内部インターフェイスは、外部インターフェイスの名前空間にあるインターフェイスによく似ています。

まとめ:インターフェイスは、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

基本的に、インタフェースでは、メソッド宣言以外のものはpublic staticです。静的なものは継承できません。したがって、ネストされたインタフェースは個別に実装する必要があります。

関連する問題