2011-08-20 10 views
15

、(インタフェースを実装)パブリックインターフェイスとパブリッククラスJavaのパブリックインターフェイスとパブリック・クラスは、単一の.javaファイルで

私はJavaのコーディングに新たなんだとを持っていることも可能であること.javaファイルには3つ以上のパブリッククラスを含めることができないネット上のほとんどの場所に記述されています。私はそれがインターフェイスとクラスについても真であるかどうかを知りたい。

+0

[Java:1つのファイル内の複数のクラス宣言]の複製可能性(http://stackoverflow.com/questions/2336692/java-multiple-class-declarations-in-one-file) –

答えて

14

いいえ、不可能です。 .javaファイルあたり1つの最上位パブリックタイプが存在することがあります。 JLS 7.6. Top Level Type Declarationsには、次のように記載されています。

[…]コンパイル単位あたり最大1つの[トップレベルパブリック]タイプが必要です。

しかし、同じファイルにパッケージ保護されたクラスがある可能性があります。

public interface Test { 
    // ... 
} 

class TestClass implements Test { 
    // ... 
} 
+2

[JLS§7.6トップレベルタイプ宣言](http://java.sun.com/docs/books/jls/third_edition/html/packages.html#26783) –

3

のJavaルールは一つだけのパブリッククラスまたはインタフェースが、ソースファイルに表示することができ、そして名前がファイルを一致しなければならないということである(すなわちテスト:あなたはTest.javaという名前のファイルにそれを置く場合、これは(罰金コンパイル.javaファイル] - > [パブリッククラスTestまたはパブリックインターフェイスのテスト、両方ではなく)

7

使用すると、1つのファイルにしたいとあなたが入れ子になったクラスを使用する場合は、できるだけ多くの公共のクラスを持つことができ、あなたの例では:

public interface I { 
    public class C implements I { 
     ... 
    } 

    public class D implements I { 
     ... 
    } 

    ... 
} 
+0

まさに!私は同様の回答を掲載しようとしていました。あなたはそのような構造を持っている点は何ですか?クラス 'C'をインスタンス化しようとすると、 'I'で定義されたメソッドを再実装する必要があります。 P.S.私は 'C'は静的である必要はないと思います。 – Gevorg

+0

@Gevorg - staticキーワードは、トップレベルクラスと同じことを意味します。唯一の違いは、Cを 'I.C'と呼ぶことができるということです。 – Kal

+1

特別なインスタンスが必要ない場合に使用される 'I'と 'I'のインタフェースを定義すると、このイディオムをよく使用します。私はそれらを閉じることができます - いくつかのファイルにそれらを散らす必要はないので、私はこれが好きです。 'setParam(new Interface.Default());'内部クラスを使用しなかった場合は、巧妙な名前について考える必要がありました。このようにして、 'Default '。 – emboss

4
public interface A 
{ 
    public void helloWorld(); 

    public static class B implements A{ 

     @Override 
     public void helloWorld() { 
      System.out.print("Hello World"); 

     } 

    } 
} 
0

インターフェイスを理解しながら次のステップとしてinterface driven programmingを理解する必要もあります。インターフェイスの実際の使用状況を確認します。 Java(または他の言語)プログラムでどのような役割を果たしますか。

関連する問題