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 のレビューも受けられます。
すべてのチャレンジ