抽象クラス: キーワード abstract を使用します。クラスが abstract によって変更された場合、そのクラスは抽象クラスと呼ばれます。
abstract がメソッドを変更する場合、このメソッドは抽象メソッドと呼ばれます。
abstract がクラスを変更する場合、このクラスは抽象クラスと呼ばれます。
クラスが抽象クラスを継承する場合、抽象クラスに抽象メソッドを実装する必要があります。
抽象キーワードの使用法:
メソッド本体: メソッドの中の中括弧の内容がメソッド本体です。
1. メソッドにメソッド本体がない場合は、メソッドをabstractで変更する必要があります。
2. クラスに抽象メソッドがある場合、そのクラスは抽象クラスである abstract で変更する必要があります。
3. 非抽象クラスがこの抽象クラスを継承する場合、すべての抽象メソッドをこの非抽象クラスで書き直す必要があります。
4. 抽象クラスは非抽象メソッドを持つことができます。
5. コンストラクターは抽象クラス内に存在できます。この機能は、サブクラスが親クラスの変数を初期化できるようにすることです。
6. 抽象クラスはオブジェクトを作成できません
理由: オブジェクトを作成すると、オブジェクトは抽象メソッドを呼び出すことができるため、抽象メソッドを呼び出すことは意味がありません。
7. 抽象メソッドは抽象クラスに出現する必要はありません。
抽象キーワードの使用シナリオ:
物を記述すると、その物には特定の動作があることがわかりますが、この動作は特定ではありません。この時点で、この動作を抽出し、未実装の動作を宣言できます。 、この動作は抽象動作と呼ばれるため、この時点では抽象クラスを使用する必要があります。
//抽象キーワードによって変更されたクラスを抽象クラスと呼びます。
abstract class Animal
{
String name;
String color;
abstract public void run ();//抽象メソッドには本体がなく、メソッドの具体的な実装もありません。
public void Eat(){
System.out.println("動物は食べています");
}
}
//非抽象クラスは抽象クラスを継承し、抽象クラス内のすべてのメソッドを実装する必要があります。
クラス Dog は Animal を拡張します
{
//親クラスの run メソッドをオーバーライドする必要があります
public void run(){
System.out.println(name + "Run fast");
}
}
クラス Fish は Animal
{
//メソッドの書き換え: run メソッドをオーバーライドするための必須要件はありません。
//書き直す必要がありますが、書き直さなくても大丈夫です。これは簡単に問題を引き起こす可能性があります。
//サブクラスに親クラスの特定のメソッドを強制的にオーバーライドする方法を考えてください
public void run(){
System.out.println(name+"swim fast");
}
}
classデモ8
{
public static void main(String[] args)
{
Dog d = new Dog();
d.name = "コーカサス";
d.run();
d.eat() ;
魚fish = new Fish();
fish.name = "クジラ";
fish.run();
fish.eat();
}
}