Javaインターフェイス(インターフェイス)は、一連のメソッド宣言であり、メソッド機能のコレクションです。インターフェイスには、メソッドの特性のみがありますが、メソッドの実装はありません。したがって、これらの方法は、さまざまな場所で異なるクラスによって実装でき、これらの実装は異なる動作(関数)を持つことができます。
1。インターフェイスの意味:
1。Javaインターフェイス、Java言語に存在する構造には、特定の構文と構造があります。
2。クラスが持っているメソッドの特徴のコレクションは、論理的な抽象化です。
前者は「Javaインターフェイス」と呼ばれ、後者は「インターフェイス」と呼ばれます。
Javaインターフェイス自体には、Javaインターフェイスには外観が含まれていないため、公共の行動のみを記述するため、JavaインターフェイスはJava抽象クラスよりも抽象的です。
Javaインターフェイスの方法は、抽象的で公開されます。 Javaインターフェイスにはコンストラクターがありません。 Javaインターフェイスには、パブリック、静的、および最終的なプロパティを持つことができます。
2。インターフェイスJavaを使用する理由は単一の継承言語ですか? OCPの原則に基づき、既存の親クラスを使用して特定のクラスに新しい機能を追加する場合は、親クラスを親クラスに追加するか、親クラスがクラス階層構造の上部に移動するまで親クラスを追加することです。このようにして、特定のクラスの挿入可能性の設計は、階層全体のすべてのクラスの変更になります。
上記の例では、インターフェイスがある場合、階層構造全体にすべてのクラスを維持する必要はありません。
3.インターフェイスには挿入可能性があります。
階層内のどのクラスもインターフェイスを実装できます。これは、このクラスのすべてのサブクラスに影響を与えますが、このクラスのスーパークラスには影響しません。このクラスは、このインターフェイスで指定されたメソッドを実装する必要があり、そのサブクラスはこのクラスからこれらのメソッドを自動的に継承することができ、もちろん、これらすべてのメソッド、またはそれらの一部を置き換えることもできます。現時点では、これらのサブクラスはプラグ可能です(このインターフェイスタイプでロードされ、すべてのサブクラスを通過および実装できます)。
インターフェイスは、補間とメソッド呼び出しを提供します。ソフトウェアシステムのスケールが大きいほど、ライフサイクルが長くなります。インターフェイスにより、ソフトウェアシステムの柔軟性とスケーラビリティ、および補間性が保証されます。
これはまさに、Javaシングル継承が新しい拡張(複数継承の置換)の可能性があるというインターフェイスのためです。 3.タイプ階層Javaインターフェイス(および抽象クラス)は、一般にタイプ階層の開始点として使用されます。
クラスにすでに主要なスーパータイプがある場合、インターフェイスを実装することにより、クラスにはハイブリッドタイプと呼ばれる別のマイナーなスーパータイプを持つことができます。
4。Javaインターフェイス分類
1。通常のインターフェイス(メソッド定義を含む)パブリックインターフェイスActionListener {public Abstract void actionperformed(actionEventイベント);}
2。識別インターフェイス(メソッドなしと属性定義なし)識別インターフェイスは、メソッドと属性のないインターフェイスです。識別インターフェイスには、クラスを実装するセマンティック要件はありません。それは、それを実装するクラスが特定のタイプに属していることのみを示します。
public interface serializable {}; 3。定数インターフェイスとは、Javaインターフェイスを使用していくつかの定数を宣言することを指し、次にこのインターフェイスを実装するクラスがこれらの定数を使用します。
public interface appconstants {public static final data_source_name = "test"; public static final user_name = "test"; public static final password = "test";}
5。インターフェイスの特性
1. Javaインターフェイスのメンバー変数は、デフォルトでは公開され、静的で、最終的なものであり(すべてが省略できます)、表示および初期化する必要があります。つまり、インターフェイスのメンバー変数は定数です(CAP、「_」単語間の「_」で区切られています)
2。Javaインターフェイスのメソッドは、デフォルトでは公開および抽象的なタイプです(すべて省略できます)。メソッド本体がなければ、それらをインスタンス化することはできません。
3. Javaインターフェイスには、パブリック、静的、最終タイプ、およびパブリックの抽象タイプのメンバー方法のメンバー変数のみを含めることができます。
4.インターフェイスにはコンストラクターがなく、インスタンス化することはできません。
5. 1つのインターフェイスは別のインターフェイスを実装できませんが、他の複数のインターフェイスを継承できます。
6. Javaインターフェイスは、クラスを通じて抽象的なメソッドを実装する必要があります。
7.クラスが特定のJavaインターフェイスを実装する場合、インターフェイスにすべての抽象的なメソッドを実装する必要があります。そうしないと、このクラスは抽象クラスとして宣言する必要があります。
8.インターフェイス(インスタンス)のインスタンスを作成することは許可されていませんが、インターフェイスタイプの参照変数を定義できます。この参照変数は、このインターフェイスを実装するクラスのインスタンスを指します。
9.クラスは1つの直接の親クラスのみを継承することができますが、複数のインターフェイスを実装し、間接的に複数継承を実装できます。
6. JavaインターフェイスとJava抽象クラスの違いは、オブジェクト指向のデザインの焦点は抽象化です。抽象クラスとインターフェイスの両方は、継承ツリーの上層にあります。
類似点:
1。システムの抽象化層を表します。システムが継承ツリーでクラスを使用する場合、参照変数を継承ツリーの上部抽象タイプとして宣言しようとする必要があります。これにより、2つのシステム間の結合が改善されます。 2。どちらもインスタンス化することはできません。 3.両方とも抽象的なメソッドが含まれています。これらの抽象的なメソッドは、システムが提供できるサービスを説明するために使用されますが、メソッド本体の違いは含まれていません。
1.最大の違いは、Java抽象クラスが特定の方法の部分的な実装を提供できるのに対し、Javaインターフェイスはできないことです。これはおそらくJava Abstractクラスの唯一の利点ですが、この利点は非常に便利です。
抽象クラスに新しい具体的な方法を追加でき、すべてのサブクラスがこの方法を自動的に取得します。ただし、Javaインターフェイスに新しいメソッドを追加すると、このインターフェイスを実装するすべてのクラスを正常にコンパイルできないため、このメソッドの実装をインターフェイスを実装する各クラスに手動で追加する必要があります。
2。抽象クラスの実装は、サブクラスによってのみ与えることができます。つまり、実装は抽象クラスによって定義された継承された階層構造にのみ存在することができます。したがって、タイプ定義ツールとしての抽象クラスの有効性は大幅に削減されます。
Javaインターフェイス。 Javaインターフェイスによって指定されたメソッドを実装するクラスは、このインターフェイスのタイプを持つことができ、クラスは複数のJavaインターフェイスを実装できるため、このクラスには複数のタイプがあります。
上記のように、Javaインターフェイスは、混合タイプを定義するための理想的なツールです。混合クラスは、クラスには特定のプライマリタイプの動作だけでなく、他の二次的な動作もあることを示しています。
3。ポイント1と2の抽象クラスとJavaインターフェイスのそれぞれの利点を組み合わせて、古典的なデザインパターンが出てきます。
タイプを宣言する作業はまだJavaインターフェイスによって行われますが、同時にJava抽象クラスが与えられ、このインターフェイスが実装されています。この抽象型にも属する他のコンクリートクラスは、このJavaインターフェイスを実装するか、この抽象クラスを継承することを選択できます。つまり、階層では、Javaインターフェイスが上部にあり、その後抽象クラスが続きます。これら2つの最大の利点は最大化できます。このモードは「デフォルトの適応モード」です。
このパターンはJava言語APIで使用され、すべて特定の命名仕様:要約 +インターフェイス名に従います。
7.インターフェイスと抽象クラスを使用するという全体的な原則:
1.システムと外の世界との間の相互作用のために、インターフェイスをウィンドウとして使用します。外部ユーザー(別のシステム)の観点からは、インターフェイスは、システムが提供できるサービスと、インターフェイスが実装する必要があるシステム自体の観点からユーザーに約束します。インターフェイスは、システム内の最高レベルの要約タイプです。インターフェイスの相互作用を通じて、2つのシステムA間の結合システムAを改善してシステムBを介して対話できます。これは、システムAがシステムBにアクセスすると、参照変数がシステムBのインターフェイスタイプとして参照変数を宣言することを意味します。
パブリックインターフェイスB {}
パブリッククラスCはB {}を実装します
パブリッククラスA {b a = new c(); }
2。Javaインターフェイス自体は非常に安定している必要があります。 Javaインターフェイスが策定されると、発生したときに移動することは許可されません。そうしないと、外部ユーザーとシステム自体に影響を与えます。 3。抽象クラスを使用して、システム内の拡張ポイントをカスタマイズし、抽象クラスをカスタマイズして部分的な実装を完了します。一部の機能は、サブクラスを通じて実装する必要があります。
上記の記事では、Javaインターフェイスの抽象カテゴリとの概念、分類、違いについて、私があなたと共有するすべてのコンテンツです。参照を提供できることを願っています。wulin.comをもっとサポートできることを願っています。