インターフェイス キーワード – Java
1. 使用上の注意
- インターフェイスはインターフェイスを使用して定義されます
- Java では、インターフェースとクラスは並置された 2 つの構造です。
- インターフェイスを定義する方法: インターフェイスでメンバーを定義する
- DK7 以前: グローバル定数と抽象メソッドのみを定義できます
- グローバル定数: public static final ただし、書くときは省略可能
- 抽象化方法: 公開抄録
- JDK8: グローバル定数と抽象メソッドの定義に加えて、静的メソッドとデフォルト メソッドも定義できます。
- DK7 以前: グローバル定数と抽象メソッドのみを定義できます
- インターフェイスでコンストラクタを定義することはできません! インターフェイスをインスタンス化できないことを意味します
- Java 開発では、クラスに実装してインターフェースを使用します。
- 実装クラスがインターフェース内のすべての抽象メソッドをカバーしている場合、実装クラスをインスタンス化できます
- 実装クラスがインターフェースのすべての抽象メソッドをカバーしていない場合でも、実装クラスは依然として抽象クラスです。
- Java クラスは複数のインターフェースを実装できる -> Java の単一継承の制限を補う
格式:クラス AA 拡張 BB 実装 CC,DD,EE
- インターフェイスは継承可能で、複数の継承が可能
- インターフェイスの特定の使用法は多態性を反映しています
- 実際、インターフェースは仕様と見なすことができます
2. Java8のインターフェースに関する新仕様
- インターフェイスで定義された静的メソッドは、インターフェイスを介してのみ呼び出すことができます (インスタンス化されたクラスは使用できません)。
- クラスのオブジェクトを実装することにより、インターフェイスのデフォルト メソッドを呼び出すことができます; 実装クラスがインターフェイスのデフォルト メソッドを書き換えた場合、呼び出し時にオーバーライドされたメソッドを引き続き呼び出します
- サブクラス (実装クラス) が、親クラスによって実装されたインターフェイスで同じ名前とパラメーターを持つ既定のメソッドを継承する場合、サブクラスは、このメソッドを書き換えることなく、既定で親クラスの同じ名前とパラメーターを持つメソッドを呼び出します。 ⇒親クラスとインターフェースで同名同名のメソッド、クラス優先の原則
- 実装クラスが複数のインターフェイスを実装し、これらの複数のインターフェイスが同じ名前とパラメーターを持つデフォルト メソッドを定義し、実装クラスがこのメソッドをオーバーライドしない場合、エラーが報告されます -> インターフェイスの競合
- 親クラスでオーバーライドされたメソッドと、サブクラス (または実装クラス) のメソッドのインターフェイスを呼び出す方法
publicvoid myMethod(){
method3();//调用自己定义的重写的方法
super.method3();//调用的是父类中声明的
//调用接口中的默认方法
CompareA.super.method3();
CompareB.super.method3();
}
3. 抽象クラス vs インターフェース
- 同じ点: インスタンス化できません; どちらも抽象メソッドを含むことができます
- 違い
- 抽象クラスとインターフェースの定義と内部構造
- クラス: 単一継承 ----- インターフェース: 多重継承