インターフェース
参照データタイプ、複数のクラスの共通仕様は
、コンパイル後も.classを生成します
(同じ種類のIDEAが作成されました、インターフェイスを選択してください)
public interface 接口名{
常量
抽象方法
默认方法
静态方法
私有方法}
インターフェイスの使用:実装クラスが必要です。使用する実装クラスオブジェクトを作成します。
public class 实现类名称 implements 接口名称{
//必须覆盖接口中所有抽象方法}
実装クラスが書き換えインターフェイスのすべての抽象メソッドをカバーしていない場合、実装クラスは抽象クラスである必要があります
抽象メソッドabstract:
インターフェイスの抽象メソッド。修飾子はpublic abstractである必要があります(省略可能)
デフォルトのメソッドdefault:
インターフェースのアップグレードの問題を解決する(インターフェースに新しい抽象メソッドを追加する)ために、
デフォルトのメソッドを実装クラスでオーバーライドすることもできます。
public default 返回值类型 方法名称(参数){
};
デフォルトのメソッドを
呼び出すには、デフォルトのメソッド修飾子がパブリックである必要があります(省略可能)。実装クラスがない場合は、インターフェイスを検索します。
静的メソッド静的:
public static 返回值类型 方法名称(参数){
};
デフォルトのメソッド修飾子はパブリックである必要があります(省略可能)。
静的メソッドは、インターフェイス実装クラスのオブジェクトを介して呼び出すことはできません。インターフェイス名
から直接呼び出します(静的はオブジェクトとは関係ありません)
プライベートメソッドprivate:
2つのメソッドのコード重複の問題を解決するには、パブリックメソッドを抽出する必要がありますが、プライベート化する必要があります。
通常のプライベートメソッド、静的プライベートメソッド(静的メソッドのコード重複を解決するため)
private 返回值类型 方法名称(参数){
};
private static 返回值类型 方法名称(参数){
};
通常のプライベートメソッドはオブジェクトを介して呼び出され、静的プライベートメソッドはインターフェイスを介して直接呼び出されます
メンバー変数はインターフェイスで定義することもできます。これはpublicstatic finalで変更する必要があり、初期化して割り当てる必要があります(定数と同等)(省略できますが、性質は同じです)(通常はすべて大文字を使用して定数を示します)
public interface 接口名{
public static final 数据类型 变量名 = 初始值;}
(最後のキーワードは不変を表します)
クラスは同時に複数のインターフェースを実装できます
public class 实现类名 implements 接口名1,接口名2…{
}
複数のインターフェイスで抽象メソッドが繰り返される場合は、オーバーライドと書き換えを1回だけ行う必要があります。
複数のインターフェイスでデフォルトの抽象メソッドが繰り返される場合は、競合するデフォルトメソッドを一律にオーバーライド
し、親クラスのデフォルトとインターフェイスをオーバーライドする必要があります。デフォルトのメソッドが繰り返され、親クラスのメソッド
が優先されます。インターフェイスの実装よりもJavaでの継承が優先されます。
public class 类名 extends 父类 implements 接口{
};
クラスとクラスは単一継承されます(クラスには直接の親が1つだけ
あります)。クラスとインターフェイスは複数実装されます(クラスは複数のインターフェイスを実装できます)。
インターフェイスとインターフェイスは複数継承されます(インターフェイスは複数の親インターフェイスを持つことができます)
(複数の親インターフェイスの抽象メソッドを繰り返すことができ、複数の親インターフェイスのデフォルトのメソッドが競合することはありません->サブインターフェイスを上書きする必要があります)
多形性
多型の前提は継承(+実装を拡張する)である。
アンのオブジェクトが同時に複数の形式があります。親クラスの参照は、サブクラスのオブジェクトを指す
(左親と右の子、物事の広い範囲などのオブジェクトを扱います)
父类 对象名 = new 子类();
接口 对象名 = new 实现类();
親クラスとサブクラスのメンバー変数が同じ名前の場合、メンバー変数はデータタイプ(等符号の左側)が割り当てられたときに使用されます。
親クラスとサブクラスのメンバーメソッドが同じ名前の場合、値を割り当てるときに新しい人(等記号の右側)誰のメンバーシップ方式を使用するのか
多態性の利点:
newのどのサブクラスであっても、左側の親クラスの呼び出しメソッドは変更されません