Javaナレッジポイントの要約[6]抽象クラスとインターフェース

1.抽象クラス

1)抽象クラスとは

抽象の反対は具体的であり、具体的でないほど抽象的です。抽象修正クラスは、インスタンス化されないことに加えて、抽象クラスと呼ばれます。その他の文法規則は通常のクラスと同じです。

abstractキーワードの意味は、このクラスが抽象クラスであり、インスタンス化されるべきではないことをプログラマーがコンパイラーに明確に伝えることができるようにすることです。したがって、コンパイラーは関連するチェックを適切に行う必要があります。

2)抽象メソッドとは

  • メソッドの前に抽象を追加します。これは抽象メソッドです。
  • 抽象メソッドはメソッド本体を必要としません
  • 抽象メソッドは、抽象クラスにのみ存在でき(また、インターフェイスにも存在できます)、通常のクラスには存在できません。
  • 抽象メソッドの目的は、サブクラスが書き換えられるようにすることです。

3)例

abstract class Animal{ //抽象类
    public abstract void eat(); //抽象方法
}

public class Blog {
    public static void main(String[] args) {
        Animal animal=new Animal();
    }
}

演算結果:

2.インターフェース

1)インターフェースとは

クラス間には単一の継承しか存在できないことがわかっています。「多重継承」と同様の効果を実現するために、インターフェースが導入されています。インターフェイスは抽象クラスに一歩近づき、抽象クラスよりも抽象的です。抽象クラスはインスタンス化できませんが、他のすべての側面は通常のクラスと同様であり、インターフェイスはより抽象的です。インスタンス化できないだけでなく、クラスのさまざまな特性もありません。

ネーミング:インターフェースのネーミングには通常、大文字のIが前に付けられ、形容詞がネーミングに使用されます。表現セマンティクス:クラスにはXXXの特性があります

2)例

通常のメソッドではなく、抽象メソッドのみをインターフェースに配置できます(下図の波線)

インターフェイスの抽象メソッドは、パブリック抽象キーワードを書き込むことができません。書き込むかどうかに関係なく、抽象共通メソッドを意味します〜

ただし、abstractクラスのabstractメソッドはabstractキーワードで記述する必要があります。abstractメソッドに加えて、通常のメソッドをabstractクラスに入れることもできるので、うまく記述しないと通常のメソッドになります。 、メソッド本体を追加する必要があります。

通常の属性ではなく、パブリック静的最終変更属性のみをインターフェースに配置できます。

interface IEating {
    public static final String food = "fish";
}

インターフェースとクラスの間に継承はなく、クラスのみが特定のインターフェースを実装します。インターフェイスとインターフェイスの間には継承が存在する可能性があります。

動物のクラス

public class Animal {
    
}

IEatingインターフェース

public interface IEating {
    public static final String food = "fish";
    public abstract void eat();
}

IJumpインターフェース

public interface IJump {
    void jump();
}

CatクラスはAnimalクラスを継承し、IEatingおよびIJumpインターフェイスを実装します

public class Cat extends Animal implements IEating,IJump{
    @Override
    public void eat() {

    }
    @Override
    public void jump() {

    }

}

注意:

  • 実装されたクラスは、インターフェイスのすべてのメソッドを書き換える必要があります。
  • 複数のインターフェースを実装するには、カンマを使用してインターフェースを区切ります。

3.抽象クラスとインターフェースの比較

  • 抽象クラスは、インスタンス化できないことを除いて、通常のクラスと似ています。インターフェイスは通常のクラスからはほど遠い(プロパティ、メソッド、および他のクラス間の関係を含む)
  • クラスは1つの抽象クラスからのみ継承できますが、クラスは同時に複数のインターフェースを実装できます。

なぜインターフェースのような文法を発明するのですか?

Javaでの非多重継承の問題を解決します。Javaでの継承は単一の継承であり、いくつかのシナリオでは多重継承が役立ちます。Javaでは、クラスを継承し、複数のインターフェースを実装することで、多重継承と同様の効果を実現できます。

 

 

おすすめ

転載: blog.csdn.net/weixin_43939602/article/details/113096038