Java インターフェースの修飾子は「public abstract」にすることができます。インターフェイスはシステムが提供するすべてのサービスを記述するために使用されるため、インターフェイス内のメンバー定数とメソッドはパブリック型である必要があります。インターフェイスはシステムが実行できることのみを記述しますが、その方法は指定しません。インターフェイスには抽象メソッドがあります。
Java インターフェースは実装する必要があるため、Java インターフェースの修飾子はデフォルトで public abstract になります。
インターフェースは非常に重要です。状況を説明するために、ここでもう少し詳しく説明します:
(1) インターフェースは、システムが提供するすべてのサービスを記述するために使用されます。インターフェイス内のメンバー定数とメソッドはパブリック型である必要があり、外部ユーザーがそれらにアクセスできることを保証します;
(2) インターフェイスはシステムが実行できることのみを記述しますが、その方法は指定しません。メソッド;
(3) インターフェイスには特定のインスタンスに関連する詳細が含まれていないため、インターフェイスには構築メソッドがなく、インスタンス化もできず、インスタンス変数もなく、静的変数のみが存在します。
(4) インターフェース内の変数はすべての実装クラスに共通ですが、変更するものは共通としてカウントできないため、共通であるため定数でなければなりません。したがって、変数は不変 (最終) 型、つまり定数です。
(5) インターフェース内で変数を定義できない?インターフェイスで変数を定義できるが、インターフェイス内のメソッドが抽象である場合、インターフェイス内の動作を通じてプロパティを変更することはできません。インターフェイスを実装するオブジェクトの動作を通じてインターフェイス内のプロパティを変更できるため、それは問題ではない、と言う人もいます。もちろんこれで問題はありませんが、このような状況を考慮してください。インターフェイス A にパブリック アクセスを持つ静的変数 a がある場合。 Java のセマンティクスによれば、インターフェイスを実装するオブジェクトを使用せずに変数 a にアクセスでき、A.a = xxx; を通じてインターフェイス内の変数 a の値を変更できます。これが抽象クラスで実行できるのと同様に、インターフェイス A を実装するすべてのオブジェクトには、自動的に a の値が変更されます。つまり、1 か所で a が変更されると、これらすべてのオブジェクトの a の値も追従します。 。 かわった。これと抽象クラスの違いは何ですか? より高い抽象レベルのインターフェースをどのように実現するか? インターフェースが提供する統一プロトコルをどのように実現するか? では、インターフェースの抽象化は何に使われるのでしょうか?したがって、インターフェース内に変数を出現させることはできず、変数があるとインターフェースが提供する統一抽象化の考え方と矛盾します。したがって、インターフェイス内の属性は、読み取りのみが可能で変更できない定数である必要があり、この方法でのみ、インターフェイスを実装するオブジェクトに統一された属性を提供できます。
平たく言えば、何かを変更する必要があると思われる場合は、インターフェイスではなく独自の実装に入れてください。インターフェイスは、あるタイプの属性と動作をより高いレベルで抽象化したものにすぎません。 。変更に対してクローズされ、拡張 (さまざまな実装) に対してオープンであるインターフェイスは、オープン-クローズの原則の現れです。
つまり:
**インターフェイスのメソッドはデフォルトではパブリック抽象です;
インターフェイス内で変数を定義することはできません。つまり、定義できるのは定数のみです(最終的な変更を加えると定数になります)。したがって、インターフェイスのプロパティはデフォルトでは public static Final 定数であり、初期値を割り当てる必要があります。 **
以上がJavaインターフェイスの修飾子は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。