図形の面積を求めるコードから考えるポリモーフィズム
ポリモーフィズムのサンプルから理解を深めましょう
コード
using System;
public abstract class Shape
{
public abstract double Area();
}
public class Circle : Shape
{
private double radius;
public Circle(double radius)
{
this.radius = radius;
}
public override double Area()
{
return Math.PI * radius * radius;
}
}
public class Rectangle : Shape
{
private double width;
private double height;
public Rectangle(double width, double height)
{
this.width = width;
this.height = height;
}
public override double Area()
{
return width * height;
}
}
class Program
{
static void Main(string[] args)
{
Shape s1 = new Circle(5.0);
Console.WriteLine("Area of Circle : " + s1.Area());
Shape s2 = new Rectangle(5.0, 6.0);
Console.WriteLine("Area of Rectangle : " + s2.Area());
Console.ReadLine();
}
}
解説
Shape
は抽象クラスで、面積を求めるArea()
メソッドを抽象メソッドとして宣言しています。Circle
とRectangle
はShape
を継承したクラスで、それぞれ円と四角形の面積を求めるためのArea()
メソッドを実装しています。Main
メソッドは、Circle
とRectangle
のインスタンスを生成して、それぞれの面積を求めます。ここでは、親クラスの型であるShape
型の変数に子クラスのインスタンスを代入していますが、ポリモーフィズムによって、正確な子クラスのメソッドが呼び出されます。
ディスカッション
コメント一覧
まだ、コメントがありません