Javaの抽象クラスとインターフェースに関する研究ノート

    抽象クラスと抽象メソッド:Javaでabstractキーワードを使用して変更されたクラスは、抽象クラスです。abstractキーワードで変更されたメソッドは抽象メソッドです。
抽象クラスを定義する方法:

abstract class 类名{
    
    }
abstract 修饰符 返回值 方法名(){
    
    }

    クラスに抽象メソッドが含まれている場合、そのクラスは抽象クラスである必要があります。つまり、クラスは抽象で変更する必要があります。
例:

//定义抽象类Animal
abstract class Animal{
    
    
   //定义抽象方法run()
   abstract void run();
}

    抽象メソッドを含むクラスは抽象クラスとして宣言する必要がありますが、抽象クラスは抽象メソッドを含む必要はなく、abstractキーワードを使用して変更するだけです。抽象クラスには抽象メソッドが含まれている可能性があるため、抽象クラスをインスタンス化することはできません。抽象メソッドにはメソッド本体がなく、呼び出すこともできません。
具体例:

//定义抽象类Animal
public abstract class Animal{
    
    
    //抽象方法show()
    abstract void show();
}
//Dog继承Animal类
public class Dog extends Animal {
    
    
    //实现抽象方法
    @Override
    void show() {
    
    
        System.out.println("我实现了父类的抽象方法....");
    }
}
//测试类
public class Example01 {
    
    
    public static void main(String[] args) {
    
    
        Dog dog = new Dog();//创建dog类的实例对象
        dog.show();//调用dog类的show()方法
    }
}

演算結果:
ここに画像の説明を挿入

インターフェース

    抽象クラスのメソッドが抽象である場合、クラスは別の宣言方法でインターフェースできます。インターフェイスを定義するときは、interfaceキーワードを使用して宣言する必要があります。
例:

public interface Animal {
    
    
    int ID = 110;
    void run();
}

    上記の例から、インターフェイスのメソッドと変数はデフォルトでいくつかの修飾子を使用しているため、インターフェイスのメソッドはabstractキーワードで装飾されていないことがわかります。このメソッドは、デフォルトで「パブリック抽象」変更、つまり抽象メソッドを使用します。変数は、デフォルトでキーワード「public static final」、つまりグローバル変数によって変更されます。
    インターフェイスのメソッドは抽象的でインスタンス化できないため、implementキーワードを使用してインターフェイスのメソッドを実装するにはクラスが必要です。
例:

//定义接口Animal
public interface Animal{
    
    
    void run();//抽象方法run()
    void Color();//抽象方法Color()
}

//Dog实现Animal接口
public class Dog implements Animal {
    
    
    //实现run()方法
    @Override
    public void run() {
    
    
        System.out.println("小狗在地上跑...");
    }
    //实现Color()方法
    @Override
    public void Color() {
    
    
        System.out.println("小狗的颜色是黑白色...");
    }
}

//测试类
public class Example01 {
    
    
    public static void main(String[] args) {
    
    
        Dog dog = new Dog();
        dog.run();
        dog.Color();
    }
}

動作結果:
ここに画像の説明を挿入
インターフェースについて以下の点をまとめます。

  • インターフェイスのメソッドは抽象メソッドであり、インスタンス化できません。
  • クラスがインターフェースを実装するとき、そのクラスが抽象クラスである場合、インターフェースにいくつかのメソッドを実装するだけで済みます。それ以外の場合は、インターフェイスのすべてのメソッドを実装する必要があります。
  • クラスがインターフェースを実装する場合、実装されたインターフェース間をコンマで区切って、複数のインターフェースを実装できます。
interface A{
    
    
  //程序逻辑
}
interface B{
    
    
  //程序逻辑
}
public class C implement A,B{
    
    
  //程序逻辑
}
  • インターフェイスはextendキーワードを介して複数のインターフェイスを継承でき、インターフェイスはコンマで区切られます。
interface A{
    
    
  //程序逻辑
}
interface B{
    
    
  //程序逻辑
}
public class C extend A,B{
    
    
  //程序逻辑
}
  • クラスは、別のクラスを継承しながらインターフェイスを実装できます。この場合、extendキーワードはimplementキーワードの前にある必要があります。
class Dog extend Animal implement A{
    
    
  //程序代码
}

    抽象クラスとインターフェースの違い:

  • 抽象クラスには構築メソッドと具象メソッドがあり、インターフェースには構築メソッドがなく、メソッドはすべて抽象メソッドです。
  • 抽象クラスには通常のメンバー変数が存在する可能性があり、インターフェイスの変数はデフォルトでグローバル変数です。
  • クラスは複数のインターフェイスを実装できますが、継承できる抽象クラスは1つだけです。
  • 抽象クラスとインターフェイスの両方に静的メンバー変数を含めることができます。抽象クラスの静的メンバー変数のアクセスタイプは任意ですが、インターフェイスで定義される変数はpublic static finalタイプのみであり、デフォルトはpublic staticfinalタイプです。
    いい加減にして!

おすすめ

転載: blog.csdn.net/qq_42494654/article/details/109280816