インターフェイス キーワード -- Java

インターフェイス キーワード – Java

1. 使用上の注意

  • インターフェイスはインターフェイスを使用して定義されます
  • Java では、インターフェースとクラスは並置された 2 つの構造です。
  • インターフェイスを定義する方法: インターフェイスでメンバーを定義する
    • DK7 以前: グローバル定数と抽象メソッドのみを定義できます
      • グローバル定数: public static final ただし、書くときは省略可能
      • 抽象化方法: 公開抄録
    • JDK8: グローバル定数と抽象メソッドの定義に加えて、静的メソッドとデフォルト メソッドも定義できます。
  • インターフェイスでコンストラクタを定義することはできません! インターフェイスをインスタンス化できないことを意味します
  • Java 開発では、クラスに実装してインターフェースを使用します。
    • 実装クラスがインターフェース内のすべての抽象メソッドをカバーしている場合、実装クラスをインスタンス化できます
    • 実装クラスがインターフェースのすべての抽象メソッドをカバーしていない場合でも、実装クラスは依然として抽象クラスです。
  • Java クラスは複数のインターフェースを実装できる -> Java の単一継承の制限を補う

格式:クラス AA 拡張 BB 実装 CC,DD,EE

  • インターフェイスは継承可能で、複数の継承が可能
  • インターフェイスの特定の使用法は多態性を反映しています
  • 実際、インターフェースは仕様と見なすことができます

2. Java8のインターフェースに関する新仕様

  • インターフェイスで定義された静的メソッドは、インターフェイスを介してのみ呼び出すことができます (インスタンス化されたクラスは使用できません)。
  • クラスのオブジェクトを実装することにより、インターフェイスのデフォルト メソッドを呼び出すことができます; 実装クラスがインターフェイスのデフォルト メソッドを書き換えた場合、呼び出し時にオーバーライドされたメソッドを引き続き呼び出します
  • サブクラス (実装クラス) が、親クラスによって実装されたインターフェイスで同じ名前とパラメーターを持つ既定のメソッドを継承する場合、サブクラスは、このメソッドを書き換えることなく、既定で親クラスの同じ名前とパラメーターを持つメソッドを呼び出します。 ⇒親クラスとインターフェースで同名同名のメソッド、クラス優先の原則
  • 実装クラスが複数のインターフェイスを実装し、これらの複数のインターフェイスが同じ名前とパラメーターを持つデフォルト メソッドを定義し、実装クラスがこのメソッドをオーバーライドしない場合、エラーが報告されます -> インターフェイスの競合
  • 親クラスでオーバーライドされたメソッドと、サブクラス (または実装クラス) のメソッドのインターフェイスを呼び出す方法
     publicvoid myMethod(){
    
    
         method3();//调用自己定义的重写的方法
         super.method3();//调用的是父类中声明的
         //调用接口中的默认方法
         CompareA.super.method3();
         CompareB.super.method3();
     }

3. 抽象クラス vs インターフェース

  • 同じ点: インスタンス化できません; どちらも抽象メソッドを含むことができます
  • 違い
    • 抽象クラスとインターフェースの定義と内部構造
    • クラス: 単一継承 ----- インターフェース: 多重継承

おすすめ

転載: blog.csdn.net/E_chos/article/details/113347369