20200724-Java-Abstractクラス、インターフェース
1.メソッドの書き換えのルール。
サブクラスが親クラスを継承する場合、戻り値のタイプ、メソッド名、およびパラメータリストは親クラスと同じです。サブクラスのアクセス修飾子は親クラス以上である必要があり、スローされる例外は親クラスおよびメソッド本体よりも厳格であってはなりません。違う
2.ポリモーフィズムとは何ですか?
子クラスオブジェクトを指す継承、オーバーライド、および親クラス参照
、パラメーターとしての
親クラスタイプ、戻り値としての親クラスタイプ、
子クラスオブジェクトは親クラスメソッドを参照します
3.
アップキャスティング:親クラス参照はサブクラスオブジェクトを指します。
親タイプオブジェクト名= newおよびサブクラスタイプ()
は、現時点ではサブクラスの一意のプロパティおよびメソッドを使用できません
//サブクラスで、親クラスのtoHospital()メソッドが書き換えられますpet.toHospital(); DogクラスのtoHospitalがPetクラスの代わりに呼び出されます
概要:親クラス参照によってサブクラスを指すオブジェクトは、アップキャストと呼ばれます。このとき、親クラス参照変数は、サブクラスによって呼び出され、親クラスメソッドをオーバーライドまたは継承し、親クラスのメソッドは、親クラスによって参照されます。変数はサブクラス固有のメソッドを呼び出すことはできません(たとえば、Dogクラスには、サブクラスに固有であり、petから呼び出すことができない一意のメソッドcatchingFlyDisc()が含まれています)。
ダウンキャスト:オブジェクトとダウンキャストのタイプは同じです。
タイプを判別するには、instanceofキーワードを使用してください。
強制型変換
飼い主はどんなペットでも医者に会うことができますが、フリスビーは犬でしか拾えないため、ペットが犬であると判断されるまでフリスビーで遊ぶことはできません。現時点では強制型変換が必要です。犬dog =(Dog)pet; dog.catchingflyDise();
4.インターフェース
インターフェースをインスタンス化できません。
インターフェースキーワードを使用してインターフェースを定義し、
implementsキーワードを使用してインターフェースを実装してください
。インターフェースは複数の実装にすることができます(クラスは複数のインターフェースを実装できます)インターフェースをコンマで区切ります
。インターフェースのすべてのメソッドはデフォルトではインスタンス化できません。パブリック抽象メソッドインターフェースの目的の1つは、標準を確立することです
コード部分:
主なカテゴリー:
public class Computer implements CPU,EMS,HardDisk {
String brind;
String frquency;
String capacity;
String volum;
public Computer() {
}
public Computer(String brind, String frquency, String capacity, String volum) {
this.brind = brind;
this.frquency = frquency;
this.capacity = capacity;
this.volum = volum;
}
@Override
public void brind() {
System.out.println("品牌是:"+brind);
}
@Override
public void frequency() {
System.out.println("频率是:"+frquency);
}
@Override
public void capacity() {
System.out.println("硬盘容量是:"+capacity);
}
@Override
public void volum() {
System.out.println("内存容量是:"+volum);
}
}
3つのインターフェース:
public interface CPU {
void brind();
void frequency();
}
public interface EMS {
void capacity();
}
public interface HardDisk {
void volum();
}
テストカテゴリ:
public class Test {
public static void main(String[] args) {
Computer computer = new Computer("Intel","3.8HZ","3000GB","4G");
computer.brind();
computer.frequency();
computer.capacity();
computer.volum();
}
}
手順結果:
品牌是:Intel
频率是:3.8HZ
硬盘容量是:3000GB
内存容量是:4G