Javaにおけるabstractの使い方は?
Javaでのabstractキーワードは抽象クラスと抽象メソッドを宣言するために使用されます。
- 抽象クラス:abstractキーワードで修飾されたクラスは、抽象クラスと呼ばれ、直接インスタンス化することはできません。代わりに親クラスとしてのみ継承されます。抽象クラスには抽象メソッドと非抽象メソッドを含めることができます。
- Animalという抽象クラスがあります。名前という文字列型の変数が定義されています。soundという抽象メソッドがあり、sleepというメソッドも定義されています。 sleepメソッドは「Animal is sleeping」というメッセージを出力します。
- 抽象メソッド:abstractキーワードで修飾されたメソッドは抽象メソッドと呼ばれ、メソッドの本体がなく、メソッドの宣言のみがあり、具体的な実装はサブクラスによって行われます。
- サウンドを再生する抽象メソッド。
- サブクラスは、抽象クラスの抽象メソッドを実装する必要があります。そうでない場合、サブクラスも抽象クラスとして宣言する必要があります。
- クラスDogは動物を拡張し、音を出力するメソッドがあります。その音は「犬が吠えています」と表示されます。
- 注意:抽象メソッドはprivate、static、finalとして宣言することはできず、サブクラスで実装する必要があり、インスタンス化することはできません。
- 抽象クラスを使用する。
- Abstract classes cannot be instantiated directly, they can only be instantiated through their subclasses.
抽象クラスは直接インスタンス化することはできず、そのサブクラスを介してのみインスタンス化することができます。 - 動物 animal = new Dog();
animal.sound(); // 表示:”犬が吠えている”
animal.sleep(); // 表示:”動物が眠っている” - 抽象クラスは、メソッドのパラメータータイプや戻り値のタイプとして使用することができます。
- void doSomething(Animal animal) {
// …
}Animal getAnimal() {
// …
}アニマル doSomething(アニマル animal) {
// …
}アニマル getAnimal() {
// …
} - 抽象クラスは継承および拡張することができます。
- クラスCatは動物を継承し、soundメソッドでは「Cat is meowing」と表示されます。