導入
「動物」の共通機能を作っておき、「犬」「猫」がそれを引き継いで拡張する——これが継承です。共通部分を親クラスにまとめ、重複を減らせます。
図解
flowchart TB
A["Animal(親)<br/>Name / Eat()"] --> D["Dog(子)<br/>Animal の機能 + Fetch()"]
A --> C["Cat(子)<br/>Animal の機能 + Climb()"]
style A fill:#e1f5fe
サンプル
var dog = new Dog();
dog.Name = "ポチ";
dog.Eat(); // ポチ は食べた(親から継承)
dog.Fetch(); // ポチ はボールを取ってきた(子で追加)
// : で「Animal を継承する」と宣言
class Animal
{
public string Name = "";
public void Eat()
{
Console.WriteLine($"{Name} は食べた");
}
}
class Dog : Animal // Dog は Animal の機能をすべて引き継ぐ
{
public void Fetch()
{
Console.WriteLine($"{Name} はボールを取ってきた");
}
}
class 子 : 親で継承する。子は親のpublicメンバーをすべて引き継ぐ- 子は親の機能に加えて、独自のメンバーを足せる
- 共通機能を親に集約でき、重複を減らせる
演習
var car = new Car();
car.Start(); // エンジン始動(親から継承)
car.OpenTrunk(); // トランクを開けた(子で追加)
// TODO: Vehicle クラス(Start メソッド → "エンジン始動")を作り、
// それを継承した Car クラス(OpenTrunk → "トランクを開けた")を定義してください
___
- 期待される出力:
エンジン始動トランクを開けた(2行)
ヒント1を見る
class Car : Vehicle { ... } の形で継承します
ヒント2を見る
class Vehicle { public void Start() { Console.WriteLine("エンジン始動"); } } class Car : Vehicle { public void OpenTrunk() { Console.WriteLine("トランクを開けた"); } }
まとめ
class 子 : 親で親の機能を引き継ぐ(継承)- 子は親の機能+独自の機能を持てる
- 共通部分を親に集約して重複を減らす
次回: 同じ呼び出しで振る舞いを変える「ポリモーフィズム」です。