オブジェクト指向 C#

C#のポリモーフィズム

このレッスンでは、ポリモーフィズムを使い、共通の型を通していろいろな図形に同じメソッドを呼び出します。

はじめに

ポリモーフィズム(polymorphism)を使うと、ifで種類を1つずつ確認しなくても、共通の型を通していろいろな種類のオブジェクトを扱えます。メソッドをどう実行するかは、それぞれのオブジェクトの種類が自分で決めます。

抽象クラスShapeは、実装を持たないArea()メソッドを宣言し、CircleとSquareはそれぞれoverrideで自分の面積の計算方法を実装します。ループの変数shapeの型は共通のShapeですが、プログラムは実行時に各オブジェクトに合ったバージョンを自動で呼び出し、結果は12.57と9.00になります。

実行できる C# の例

C#
コードを実行 →
Program.cs
using System;

abstract class Shape { public abstract double Area(); }
class Circle(double radius) : Shape { public override double Area() => Math.PI * radius * radius; }
class Square(double side) : Shape { public override double Area() => side * side; }

class Program
{
    static void Main()
    {
        Shape[] shapes = { new Circle(2), new Square(3) };
        foreach (Shape shape in shapes) Console.WriteLine($"{shape.Area():F2}");
    }
}
実行結果
12.57
9.00

デバッガーで練習する

大事な代入や条件にブレークポイントを置いて Debug を押し、次の行に進む前にローカル変数の値を確かめましょう。

チャレンジで練習する

このレッスンの内容を使って実際の問題を解きましょう。各チャレンジはブラウザで動き、すぐにテストされ、AI のレビューも受けられます。

すべてのチャレンジ