Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaの抽象クラスとインターフェースの違い


Javaでは、抽象化は抽象クラスとインターフェースを使用して実現されます。どちらにも、子クラスまたは実装クラスが実装する必要のある抽象メソッドが含まれています。抽象クラスとインターフェースの重要な違いは次のとおりです。

抽象クラス
インターフェース
Sr。いいえ。
キー
1
サポートされているメソッド
abstractクラスには、抽象メソッドと具象メソッドの両方を含めることができます。
インターフェイスは抽象メソッドのみを持つことができます。 Java 8以降では、静的メソッドだけでなくデフォルトメソッドも使用できます。
2
多重継承
多重継承はサポートされていません。
インターフェイスは多重継承をサポートします。
3
サポートされている変数
final、non-final、staticおよびnon-static変数がサポートされています。
静的変数と最終変数のみが許可されます。
4
実装
抽象クラスはインターフェースを実装できます。
インターフェースはインターフェースを実装できません。インターフェースを拡張できます。
5
キーワード
abstractキーワードを使用して宣言されたabstractクラス。
interfaceはinterfaceキーワードを使用して宣言されます。
6
継承
抽象クラスは、extendsキーワードを使用して別のクラスを継承し、インターフェースを実装できます。
インターフェースはインターフェースのみを継承できます。
7
継承
抽象クラスはextendsキーワードを使用して継承できます。
インターフェイスは、implementsキーワードを使用してのみ実装できます。
8
アクセス
抽象クラスには、プライベート、パブリックなど、あらゆるタイプのメンバーを含めることができます。
インターフェイスはパブリックメンバーのみを持つことができます。

抽象クラスとインターフェースの例

JavaTester.java

public class JavaTester {
   public static void main(String args[]) {
      Animal tiger = new Tiger();
      tiger.eat();
      Cat lion = new Lion();
      lion.eat();
   }
}
interface Animal {
   public void eat();
}
class Tiger implements Animal {
   public void eat(){
      System.out.println("Tiger eats");
   }
}
abstract class Cat {
   abstract public void eat();
}
class Lion extends Cat{
   public void eat(){
      System.out.println("Lion eats");
   }
}

出力

Tiger eats
Lion eats

  1. Javaのイベントリスナーインターフェイスとイベントアダプタクラスの違いは何ですか?

    EventListener インターフェイスは、特定の種類のイベントに対してイベントハンドラーによって実装する必要があるメソッドを定義しますが、イベント アダプター クラスは、 EventListenerのデフォルトの実装を提供します インターフェイス。 イベントリスナー イベント リスナー イベントを処理するためのすべてのコンポーネントのバックボーンです。 特定のEventListenerのすべてのメソッド EventObjectのサブクラスであるインスタンスとして単一のパラメータを持ちます クラス。 EventListener インターフェースを拡張する必要があり、 jで定義さ

  2. Javaの抽象クラス

    宣言にabstractキーワードを含むクラスは、abstractクラスと呼ばれます。 抽象クラスには、抽象メソッド、つまり本体のないメソッドが含まれる場合と含まれない場合があります(public void get();) ただし、クラスに少なくとも1つの抽象メソッドがある場合、そのクラスは抽象として宣言する必要があります。 クラスが抽象として宣言されている場合、インスタンス化することはできません。 抽象クラスを使用するには、それを別のクラスから継承し、そのクラスに抽象メソッドの実装を提供する必要があります。 抽象クラスを継承する場合は、その中のすべての抽象メソッドに実装を提供する必要がありま