オブジェクト指向プログラミングを学んでいますが、抽象クラスと具象クラスについて混乱しています。いくつかの実際の例をいただければ幸いです。そして、他のものよりも使用する利点は何ですか? 抽象クラスと具象クラスを好むのはいつですか?
答えが、私が文脈で尋ねている言語に固有のものである場合Ruby
オブジェクト指向プログラミングを学んでいますが、抽象クラスと具象クラスについて混乱しています。いくつかの実際の例をいただければ幸いです。そして、他のものよりも使用する利点は何ですか? 抽象クラスと具象クラスを好むのはいつですか?
答えが、私が文脈で尋ねている言語に固有のものである場合Ruby
インスタンス化してはならないオブジェクトがある場合は、抽象クラスを使用する必要があります。ただし、このクラスをインスタンス化する場合は、具象クラスを使用する必要があります。
いくつかの動物クラスが必要だと想像してください。ただし、ルールは、犬、猫、またはマウスなどの特定の動物をインスタンス化することだけです。しかし今では、これらの動物はすべて、名前など、いくつかのプロパティとメソッドを共有しています。したがって、Animal
コードの重複を避けるために、それらを基本クラスに配置します。Animal
ただし、次のインスタンスを作成することはできません。
public abstract class Animal
{
public string Name { get; set; }
public void Sleep()
{
// sleep
}
}
public class Cat : Animal
{
public void Meow()
{
// meooooow
}
}
public void DoSomething()
{
var animal = new Animal(); // illegal operation
var cat = new Cat(); // works fine
}
抽象クラスは通常、具象クラスの基本クラスです。(派生、OO 継承による) 抽象クラスは通常、具象クラスのインターフェイスを強制します。ただし、抽象クラスは、メソッドと属性を介して具体的なクラスで使用される共通の機能を実装することもできます。
抽象クラスをインスタンス化することはできませんが、必要なメソッドがすべて実装されていると仮定して、具象クラスのみをインスタンス化できます。