MENU

C# override

C#プログラミングにおいて、overrideキーワードは非常に重要な役割を果たします。このキーワードは、継承されたクラスでメソッドを再定義する際に使用され、オブジェクト指向プログラミングの核心的な概念の一つである多態性を実現するために欠かせません。

本記事では、C#のoverrideキーワードの基本的な使い方から、実践的な応用例まで、初心者にも分かりやすく解説します。具体的なコード例を交えながら、overrideの重要性と正しい使用方法を学んでいきましょう。

目次

override キーワードとは

overrideキーワードは、派生クラス(子クラス)で基底クラス(親クラス)のメソッドを再定義する際に使用します。これにより、同じ名前のメソッドでありながら、派生クラスで異なる動作を実装することができます。

overrideを使用するための主な条件は以下の通りです:

  1. 基底クラスのメソッドがvirtualabstract、または既にoverrideされていること。
  2. 派生クラスのメソッドでoverrideキーワードを使用すること。
  3. メソッドの名前、戻り値の型、パラメータが基底クラスのメソッドと完全に一致すること。

override の基本的な使い方

以下に、overrideの基本的な使い方を示すサンプルコードを紹介します:

using System;

public class Shape
{
    public virtual double CalculateArea()
    {
        return 0;
    }
}

public class Circle : Shape
{
    private double radius;

    public Circle(double r)
    {
        radius = r;
    }

    public override double CalculateArea()
    {
        return Math.PI * radius * radius;
    }
}

public class Rectangle : Shape
{
    private double width;
    private double height;

    public Rectangle(double w, double h)
    {
        width = w;
        height = h;
    }

    public override double CalculateArea()
    {
        return width * height;
    }
}

class Program
{
    static void Main(string[] args)
    {
        Shape[] shapes = new Shape[3];
        shapes[0] = new Shape();
        shapes[1] = new Circle(5);
        shapes[2] = new Rectangle(4, 6);

        foreach (Shape shape in shapes)
        {
            Console.WriteLine($"面積: {shape.CalculateArea()}");
        }
    }
}

このコードでは、以下のポイントに注目してください:

  1. ShapeクラスのCalculateAreaメソッドはvirtualキーワードで宣言されています。これにより、このメソッドがオーバーライド可能であることを示しています。
  2. CircleクラスとRectangleクラスはShapeクラスを継承し、CalculateAreaメソッドをoverrideキーワードを使ってオーバーライドしています。
  3. 各派生クラスで、CalculateAreaメソッドは独自の計算ロジックを実装しています。
  4. Mainメソッドでは、異なる型のオブジェクトをShape型の配列に格納し、同じCalculateAreaメソッドを呼び出しています。これにより、多態性が実現されています。

overrideを使用することで、基底クラスの機能を拡張したり、特定の派生クラスに固有の動作を実装したりすることができます。これにより、コードの再利用性が高まり、より柔軟なプログラム設計が可能になります。

overrideの適切な使用は、コードの可読性と保守性を向上させる重要な要素です。継承関係にあるクラス間で一貫性のある動作を保ちつつ、必要に応じて特定の動作をカスタマイズすることができます。

次のセクションでは、overrideのより高度な使用方法や注意点について解説します。overrideを適切に活用することで、より効率的で拡張性の高いコードを書くことができるでしょう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次