【C#】abstractについて

【C#】abstractについて

abstractとは

C#のabstractは、オブジェクト指向プログラミングにおいて、クラスやメソッドの抽象化を行うために使われるキーワードです。

抽象クラス(abstract class)を作ることで、共通の機能を持たせつつ、具体的な実装は派生クラスに任せることができます。

抽象クラスの基本

抽象クラスはabstract修飾子を付けて宣言します。通常のクラスとは異なり、インスタンス化できません。

abstract class Animal
{
    public abstract void MakeSound();
}
    

上記のAnimalクラスは抽象クラスなので、そのままではインスタンスを作成できません。

抽象メソッド

抽象メソッドとは、具体的な実装を持たないメソッドのことです。抽象クラス内で定義され、派生クラスでオーバーライドされる必要があります。

abstract class Animal
{
    public abstract void MakeSound();
}

class Dog : Animal
{
    public override void MakeSound()
    {
        Console.WriteLine("ワンワン!");
    }
}
    

このように、DogクラスはMakeSoundメソッドを実装することで、Animalクラスの契約を満たします。

abstractとinterfaceの違い

  • abstract class:継承関係が1つのみ。
  • interface:複数の実装を持つことができる。

例えば、次のように使い分けます。

interface IAnimal
{
    void MakeSound();
}

class Dog : IAnimal
{
    public void MakeSound()
    {
        Console.WriteLine("ワンワン!");
    }
}
    

インターフェースは複数の異なる型に適用できますが、抽象クラスは継承による関係を強調します。

実際の使用例

実際の開発では、抽象クラスを使って共通の機能を定義し、派生クラスでカスタマイズすることが多いです。

abstract class Vehicle
{
    public abstract void Move();
}

class Car : Vehicle
{
    public override void Move()
    {
        Console.WriteLine("車が走る");
    }
}

class Bicycle : Vehicle
{
    public override void Move()
    {
        Console.WriteLine("自転車が走る");
    }
}
    

このように、Vehicleクラスを基に、異なる乗り物の動作を定義できます。

まとめ

  • abstractはクラスやメソッドの抽象化に使う。
  • 抽象クラスはインスタンス化できない。
  • 抽象メソッドは派生クラスで必ず実装する。
  • インターフェースと使い分けることが重要。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です