抽象クラスは、他のクラスの設計図のようなものです。抽象クラスから直接オブジェクトを作成することはできません。代わりに、それを他のクラスの基盤として使用し、その上に構築して詳細を埋めていくことができます。
抽象クラスは、いくつかの共通機能を持つ一般的な概念を定義したいが、状況によって異なる可能性がある特定の詳細を考慮する余地も残しておきたい場合に便利です。たとえば、食事や睡眠などの共通の特徴を含む「動物」の一般的な概念があるかもしれませんが、動物が異なれば、食事や睡眠の方法も異なる可能性があります。
Animal という抽象クラスを作成する方法は次のとおりです。
public abstract class Animal { abstract void makeSound(); // Abstract method, no body void sleep() { System.out.println("This animal sleeps."); } }
この例では、makeSound() は抽象メソッドです。つまり、本体がまだありません。ただし、sleep() メソッドは完全に実装されています。
次に、Animal クラスを拡張するいくつかのクラスを作成しましょう:
public class Dog extends Animal { void makeSound() { System.out.println("The dog barks."); } } public class Cat extends Animal { void makeSound() { System.out.println("The cat meows."); } }
Dog クラスと Cat クラスは両方とも、独自のバージョンの makeSound() メソッドを提供する必要がありますが、sleep() メソッドをそのまま継承します。
抽象クラスは、すべての子クラス間で共有する必要があるメソッドがいくつかあるが、それらの子クラスによって一部のメソッドを強制的に定義したい場合にも最適です。
public abstract class Bird extends Animal { void move() { System.out.println("The bird flies."); } }
Bird を拡張するクラスは、Animal から move() メソッドと sleep() メソッドの両方を継承しますが、それでも makeSound() を実装する必要があります。
Java の抽象クラスは、関連するクラスに特定の詳細を定義する余地を残しながら、関連するクラスの共有基盤を作成する方法を提供します。これらは共有機能と柔軟性のバランスをとり、コードを強力かつ再利用可能にします。
以上がJava の抽象クラス – 解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。