ホームページ >Java >&#&はじめる >Javaインターフェイスの修飾子は何ですか

Javaインターフェイスの修飾子は何ですか

青灯夜游
青灯夜游オリジナル
2023-01-04 13:04:093199ブラウズ

Java インターフェースの修飾子は、abstract または Final にすることができます。インターフェイスは特別なクラスとして理解できます。違いは、インターフェイスのメンバーが実行本体を持たず、グローバル定数とパブリック抽象メソッドで構成されている点です。インターフェイスのメソッドはデフォルトでパブリック抽象メソッドであり、変数を定義できないことです。定数はインターフェイス内で定義できるため (最終的な変更により定数になります)、インターフェイスのプロパティはデフォルトで public static Final 定数となり、初期値を割り当てる必要があります。

Javaインターフェイスの修飾子は何ですか

#このチュートリアルの動作環境: Windows7 システム、Java8 バージョン、DELL G3 コンピューター。

抽象クラスは複数のクラスを抽象化したテンプレートですが、この抽象化をさらに徹底すると、より特殊な「抽象クラス」であるインターフェース(Interface)を抽出することができます。インターフェイスは Java の最も重要な概念の 1 つです。特別なクラスとして理解できます。違いは、インターフェイスのメンバーが実行本体を持たず、グローバル定数とパブリック抽象メソッドで構成されることです。

インターフェースの定義

Javaインターフェースの定義は基本的にクラスと同じですが、インターフェース定義で使用するキーワードはinterfaceです。インターフェイス定義の構文は次のとおりです。 形式は次のとおりです。

[public] interface interface_name [extends interface1_name[, interface2_name,…]] {
    // 接口体,其中可以包含定义常量和声明方法
    [public] [static] [final] type constant_name = value;    // 定义常量
    [public] [abstract] returnType method_name(parameter_list);    // 声明方法
}

上記の構文の説明は次のとおりです。

  • public はインターフェイスの修飾子を表します。修飾子がない場合は、デフォルトの修飾子が使用されます。このインターフェイスのアクセス権は、それが属するパッケージに制限されます。

  • interface_name はインターフェイスの名前を表します。インターフェイス名はクラス名と同じ命名規則を採用する必要があります。つまり、文法の観点から、インターフェイス名は正当な識別子である必要があるだけです。 Java の可読性仕様に準拠するには、インターフェイス名は意味のある単語を連結し、各単語の最初の文字を大文字にし、単語間に区切り文字を入れない必要があります。

  • extends はインターフェースの継承関係を表します;

  • interface1_name は継承されるインターフェースの名前を表します;

  • constant_name は変数名 (通常は静的で最終的なもの) を表します;

  • ##returnType はメソッドの戻り値の型を表します;
  • #parameter_list はパラメータ リストを表し、インターフェイス内のメソッドにはメソッド本体がありません。
  • 注: インターフェイスには複数の直接の親インターフェイスを持つことができますが、インターフェイスはインターフェイスのみを継承でき、クラスは継承できません。

Java インターフェースの修飾子

インターフェースは非常に重要です。状況を説明するために、ここでもう少し詳しく説明します。 :

(1) インターフェイスは、システムが外部に提供するすべてのサービスを記述するために使用されるため、インターフェイス内のメンバー定数とメソッドは、外部ユーザーが確実にアクセスできるようにパブリック型である必要があります。

(2) インターフェイスは、システムが実行できることのみを説明しますが、その方法は指定していないため、インターフェイス内のメソッドは抽象メソッドです;

(3) インターフェイスは次のことを行います。特定のインスタンスに関連する詳細は含まれないため、インターフェイスにはコンストラクターはなく、インスタンス化できません。インスタンス変数はなく、静的変数のみです。

(4) インターフェイス内の変数はすべてに共通です。実装クラス。共通であるため、変更されていない必要があります。変更されたものは共有としてカウントできないためです。したがって、変数は不変 (最終) 型、つまり定数です。

(5) インターフェース内で変数を定義できない?インターフェイスで変数を定義できるが、インターフェイス内のメソッドが抽象である場合、インターフェイス内の動作を通じてプロパティを変更することはできません。インターフェイスを実装するオブジェクトの動作を通じてインターフェイス内のプロパティを変更できるため、それは問題ではない、と言う人もいます。もちろんこれで問題はありませんが、このような状況を考慮してください。インターフェイス A にパブリック アクセスを持つ静的変数 a がある場合。 Java のセマンティクスによれば、インターフェイスを実装するオブジェクトを使用せずに変数 a にアクセスでき、A.a = xxx; を通じてインターフェイス内の変数 a の値を変更できます。これが抽象クラスで実行できるのと同様に、インターフェイス A を実装するすべてのオブジェクトには、変更された a の値が自動的に設定されます。つまり、1 か所で a が変更されると、これらすべてのオブジェクトの a の値も追従します。 。 かわった。これと抽象クラスの違いは何ですか? インターフェースのより高い抽象レベルをどのように反映するか? インターフェースが提供する統一プロトコルをどのように反映するか? では、インターフェースの抽象化は何に使われるのでしょうか?したがって、インターフェース内に変数を出現させることはできず、変数があるとインターフェースが提供する統一抽象化の考え方と矛盾します。したがって、インターフェイス内の属性は、読み取りのみが可能で変更できない定数である必要があり、この方法でのみ、インターフェイスを実装するオブジェクトに統一された属性を提供できます。

平たく言えば、何かを変更する必要があると思われる場合は、インターフェイスではなく独自の実装に入れてください。インターフェイスは、あるタイプの属性と動作をより高いレベルで抽象化したものにすぎません。 。変更に対してクローズされ、拡張 (さまざまな実装) に対してオープンであるインターフェイスは、オープン-クローズの原則の現れです。

つまり:

インターフェイスのデフォルトのメソッドは

public abstract

;

インターフェイスでは変数を定義できず、定数 (および最終的な変更を加えたもの) のみを定義できます。 )は定数になります)。したがって、インターフェイスのプロパティはデフォルトで public staticfinal

定数となり、初期値を割り当てる必要があります。

注: Final と Abstract を同時に使用することはできません。

プログラミング関連の知識について詳しくは、プログラミング教育をご覧ください。 !

以上がJavaインターフェイスの修飾子は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。