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では、クラスを継承し、複数のインターフェースを実装することで、多重継承と同様の効果を実現できます。