1

Java のすべてのアクセス修飾子の違いを知っています。privateしかし、誰かが私に非常に興味深い質問をしてきましたが、その答えを見つけるのに苦労しました:インターフェースとpublicJavaのインターフェースの違いは何ですか?特に、クラスメンバーとしてどのように使用されますか? どんな助けでも大歓迎です。

4

3 に答える 3

2

の使い方はみんな知っていると思いますpublic interfaceので、ここでポイントを述べておきprivate/protected interfaceます。

Interfacesクラス定義のメンバーにすることができ、privateまたはprotectedそこで宣言することができます。

public class Test {  

    private interface Sortable {  
    }  

   protected interface Searchable {  
    }  

} 

例 1: -- ソース

public class PrivateInterface {  
     private interface InnerInterface {  
          void f();  
     }  

     private class InnerClass1 implements InnerInterface {  
           public void f() {   
               System.out.println("From InnerClass1");  
           }  
     }  

     private class InnerClass2 implements InnerInterface {  
           public void f() {   
               System.out.println("From InnerClass2");  
           }  
     }  

     public static void main(String[] args) {  
          PrivateInterface pi = new PrivateInterface();  
          pi.new InnerClass1().f();  
          pi.new InnerClass2().f();  
     }  
}   

/* Output: 
From InnerClass1 
From InnerClass2 
*/  

パッケージプライベートにできるのはインターフェース自体であり、その中のメソッドではありません。定義されているパッケージ内でのみ (名前で) 使用できるインターフェイスを定義できますが、そのメソッドはすべてのインターフェイス メソッドと同様にパブリックです。クラスがそのインターフェースを実装する場合、それが定義するメソッドは public でなければなりません。ここで重要なのは、メソッドではなく、パッケージの外部からは見えないインターフェイスの型だということです。

于 2013-09-24T13:32:51.700 に答える
0

インターフェイス宣言には、次のアクセス修飾子を含めることができます。

public protected private abstract static strictfp

public:インターフェイス タイプが public と宣言されている場合、任意のコードからアクセスできます。

protected/private:アクセス修飾子 protected と private は、直接囲んでいるクラス宣言内のメンバー インターフェイスにのみ関係します。Amember interfaceは、宣言が別のクラスまたはインターフェイス宣言に直接囲まれているインターフェイスです。

static:アクセス修飾子staticは、最上位インターフェイスではなく、メンバー インターフェイスにのみ関係します。

abstract:すべてのインターフェースは暗黙的abstractに です。この修飾子は廃止されており、新しいプログラムでは使用しないでください。

strictfp:修飾子の効果はstrictfp、インターフェイス宣言内のすべての float または double 式を明示的にFP-strictにすることです。

参照: Java 言語と仮想マシンの仕様

于 2013-09-24T13:58:34.437 に答える
0

インターフェイスのpublicprivate、およびprotectedアクセス修飾子は、クラスで意味するのと同じことを意味します。通常、これらの修飾子は、クラスにネストされたインターフェイスで使用されます。このようなもの:

//: interfaces/RandomWords.java  
// Implementing an interface to conform to a method.  
package interfaces;  

public class PrivateInterface {  
  private interface InnerInterface {  
        void f();  
  }  

  private class InnerClass1 implements InnerInterface {  
         public void f() {   
             System.out.println("From InnerClass1");  
         }  
  }  

  private class InnerClass2 implements InnerInterface {  
         public void f() {   
             System.out.println("From InnerClass2");  
         }  
  }  

  public static void main(String[] args) {  
        PrivateInterface pi = new PrivateInterface();  
        pi.new InnerClass1().f();  
        pi.new InnerClass2().f();  
  }  
}  
于 2013-09-24T13:34:06.107 に答える