C#プログラミングにおいて、override
キーワードは非常に重要な役割を果たします。このキーワードは、継承されたクラスでメソッドを再定義する際に使用され、オブジェクト指向プログラミングの核心的な概念の一つである多態性を実現するために欠かせません。
本記事では、C#のoverride
キーワードの基本的な使い方から、実践的な応用例まで、初心者にも分かりやすく解説します。具体的なコード例を交えながら、override
の重要性と正しい使用方法を学んでいきましょう。
目次
override キーワードとは
override
キーワードは、派生クラス(子クラス)で基底クラス(親クラス)のメソッドを再定義する際に使用します。これにより、同じ名前のメソッドでありながら、派生クラスで異なる動作を実装することができます。
override
を使用するための主な条件は以下の通りです:
- 基底クラスのメソッドが
virtual
、abstract
、または既にoverride
されていること。 - 派生クラスのメソッドで
override
キーワードを使用すること。 - メソッドの名前、戻り値の型、パラメータが基底クラスのメソッドと完全に一致すること。
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()}");
}
}
}
このコードでは、以下のポイントに注目してください:
Shape
クラスのCalculateArea
メソッドはvirtual
キーワードで宣言されています。これにより、このメソッドがオーバーライド可能であることを示しています。Circle
クラスとRectangle
クラスはShape
クラスを継承し、CalculateArea
メソッドをoverride
キーワードを使ってオーバーライドしています。- 各派生クラスで、
CalculateArea
メソッドは独自の計算ロジックを実装しています。 Main
メソッドでは、異なる型のオブジェクトをShape
型の配列に格納し、同じCalculateArea
メソッドを呼び出しています。これにより、多態性が実現されています。
override
を使用することで、基底クラスの機能を拡張したり、特定の派生クラスに固有の動作を実装したりすることができます。これにより、コードの再利用性が高まり、より柔軟なプログラム設計が可能になります。
override
の適切な使用は、コードの可読性と保守性を向上させる重要な要素です。継承関係にあるクラス間で一貫性のある動作を保ちつつ、必要に応じて特定の動作をカスタマイズすることができます。
次のセクションでは、override
のより高度な使用方法や注意点について解説します。override
を適切に活用することで、より効率的で拡張性の高いコードを書くことができるでしょう。
コメント