抽象抽象クラスとインターフェースの違いの詳細
抽象クラス
抽象クラス:抽象クラスに変更は抽象クラスである
抽象メソッド:抽象修正方法が抽象メソッドで、ボディは方法がない場合、このメソッドはのみ利用可能です
特徴:
- 抽象クラスはインスタンス化できません。つまり、キーワードnewでオブジェクトを作成することはできません
- 抽象クラスのサブクラスは、そのクラスのすべての抽象メソッドを実装する必要があります。そうでない場合、サブクラスも抽象クラスです
- 抽象クラスの抽象メソッドは、ポリモーフィズムの一種です
- 特定のメソッドがあり、サブクラスで呼び出すことができます
注:抽象はファイナル、プライベート、スタティックでは使用できません
インターフェース
インターフェース:インターフェース機能で装飾された抽象メソッドのコレクション
です。
- インターフェースには、定数(デフォルトのパブリック静的最終装飾)、抽象メソッド(パブリックでなければならない)、および内部クラスのみが含まれます
- オブジェクトを作成できず、構築メソッドがありません
- インターフェイスは、インターフェイスのみを継承でき、複数のインターフェイスを継承できます。
- クラスはインターフェースを実装しますが、インターフェース内のすべての抽象メソッドを実装するわけではないため、このクラスは抽象クラスです
- 同じ抽象メソッドが複数のインターフェースで定義されており、そのうちの1つだけを実装する必要がある
- Java 8から、静的で装飾された1つ以上の非抽象メソッドをインターフェースに追加できます。これらは、インターフェースまたは実装クラス(静的メソッド実装)によって直接呼び出されます。
抽象クラスとインターフェースの違い
違い | 抽象クラス | インターフェース |
---|---|---|
キーワード | 実態 | インターフェース |
工法 | 持っている | いいえ |
相続 | 単一継承 | 多重継承 |
実施方法 | 伸びる | 実装する |
メンバー変数 | 正当なメンバー変数 | パブリック静的最終変数のみ |
方法 | 法的な方法 | 抽象メソッドのみ、JDK8は静的またはデフォルトで変更された特定のメソッドを持つことができます |