C#で多態性を実現する方法は何ですか。
C#において、多態性を実現する一般的な方法は、継承とインターフェースを使用することです。具体的な方法は以下の通りです。
- 継承:親クラスと複数の子クラスを作成し、子クラスは親クラスの特性を継承し、親クラスのメソッドをオーバーライドしてポリモーフィズムを実現します。例:
class Animal
{
public virtual void MakeSound()
{
Console.WriteLine("Animal makes a sound");
}
}
class Dog : Animal
{
public override void MakeSound()
{
Console.WriteLine("Dog barks");
}
}
class Cat : Animal
{
public override void MakeSound()
{
Console.WriteLine("Cat meows");
}
}
Animal myDog = new Dog();
Animal myCat = new Cat();
myDog.MakeSound(); // Output: Dog barks
myCat.MakeSound(); // Output: Cat meows
- インターフェース:インターフェースを定義し、複数のクラスにそのインターフェースを実装させ、インターフェースメソッドの多様性を実現します。例:
interface IShape
{
double GetArea();
}
class Circle : IShape
{
public double Radius { get; set; }
public double GetArea()
{
return Math.PI * Radius * Radius;
}
}
class Rectangle : IShape
{
public double Width { get; set; }
public double Height { get; set; }
public double GetArea()
{
return Width * Height;
}
}
IShape myCircle = new Circle() { Radius = 5 };
IShape myRectangle = new Rectangle() { Width = 5, Height = 10 };
Console.WriteLine(myCircle.GetArea()); // Output: 78.54
Console.WriteLine(myRectangle.GetArea()); // Output: 50
上記の2つの方法を使用することで、異なるクラスのオブジェクトが同じメソッドを呼び出すことができ、ポリモーフィズムを実現できます。