インターフェースと抽象クラスの違い
インターフェースと抽象クラスの間には大きな違いがあり、それらの選択は、問題領域の性質と設計意図の理解が正しく、合理的であること。
#抽象クラス | インターフェース | |
インスタンス化 | できない | できない |
クラス | 継承関係。クラスは継承関係を 1 回だけ使用できます。複数のインターフェイスを継承することで多重継承を実現できます | ##クラスは複数のインターフェイスを実装できます|
#独自の | # 静的は変更できません。つまり、静的な最終でなければなりません。通常はここでは定義されません |
メソッド |
プライベートな非抽象メソッドにすることができますが、実装する必要があります |
はできませんプライベート、デフォルトはパブリック、抽象型です。 |
変数 |
プライベートにすることもできます。デフォルトはフレンドリー型です。値は次の値に含めることができます サブクラスで再定義または再割り当てできます |
はプライベートにすることはできません デフォルトは public static Final 型であり、その初期値を指定する必要があります 再定義することはできませんまたは実装クラスで変更された値。 |
デザインコンセプト |
は「is-a」関係を表します |
は、「like-a」関係を表します |
|
を達成するには、継承が必要です。extends |
実装を使用するには |
A.どちらも抽象クラスなのでインスタンス化できません。
B. インターフェイス実装クラスと抽象クラスのサブクラスの両方が、宣言された抽象メソッドを実装する必要があります。
推奨学習:
java チュートリアルA. インターフェイスを実装する必要があり、実装する必要があります。抽象クラスは継承する必要があり、extends を使用します。 B. クラスは複数のインターフェイスを実装できますが、クラスは 1 つの抽象クラスのみを継承できます。
C. インターフェイスは特定の関数の実装に重点を置きますが、抽象クラスは所有権関係に重点を置きます。
D. インターフェイス実装クラスと抽象クラスのサブクラスは両方とも対応する抽象メソッドを実装する必要がありますが、実装形式は異なります。インターフェイス内のすべてのメソッドは、宣言のみが行われる (メソッド本体のない宣言) 抽象メソッドであり、実装クラスはそれを実装する必要があります。抽象クラスのサブクラスは選択的に実装できます。
3. インターフェースの適用場面A. クラスは、実装方法に関係なく、調整のために特定のインターフェースを必要とします。 B. 特定の機能を実現できる識別子として存在することも、インターフェイス メソッドを持たない純粋な識別子であることもできます。
C. クラスのグループは 1 つのクラスとして扱われる必要があり、呼び出し元はインターフェイスを通じてのみこのクラスのグループにアクセスします。
D. 特定の複数の機能を実装する必要がありますが、これらの機能はまったく関連していない可能性があります。
4. 抽象クラスの適用場面つまり、統一インターフェースとインスタンス変数やデフォルトメソッドの両方が必要な場合に利用できます。最も一般的なものは次のとおりです: A. インターフェイスのセットを定義しますが、各実装クラスにすべてのインターフェイスの実装を強制したくありません。抽象クラスを使用してメソッド本体のセット、または空のメソッド本体を定義し、サブクラスが対象とするメソッドを選択できるようにすることができます。
B. 場合によっては、純粋なインターフェイスだけではクラス間の調整を満たすことができず、異なる関係を区別するためにクラス内の状態を表す変数も必要になります。抽象の仲介的な役割は、これをうまく満たすことができます。
C. 相互に調整されたメソッドのセットを標準化します。その一部は共通で状態に依存せず、サブクラスが個別に実装する必要なく共有できますが、他のメソッドは各サブクラスがそれに応じて実装する必要があります。特定の機能を達成するための特定の状態。
その他の
プログラミング チュートリアルについては、引き続き PHP 中国語 Web サイトに注目してください。
以上がインターフェースと抽象クラスの違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。