継承(inheritance)とは、あるクラスの機能を別のクラスに引き継ぐ仕組みです。
「親クラス(基底クラス)」の機能を、「子クラス(派生クラス)」が引き継いで利用できます。
using System;
class Animal
{
public void Eat()
{
Console.WriteLine("食べる");
}
}
class Dog : Animal
{
public void Bark()
{
Console.WriteLine("ワンワン");
}
}
class Program
{
static void Main()
{
Dog d = new Dog();
d.Eat(); // Animalクラスのメソッド
d.Bark(); // Dogクラスのメソッド
}
}
この例では、Dog
クラスが Animal
クラスを継承しており、Eat()
メソッドも使用できます。
オーバーライド(override)とは、親クラスで定義されたメソッドを、子クラスで上書きすることです。
オーバーライドするためには、親クラスのメソッドに virtual
を付け、子クラスのメソッドに override
を付けます。
using System;
class Animal
{
public virtual void Speak()
{
Console.WriteLine("動物が鳴く");
}
}
class Dog : Animal
{
public override void Speak()
{
Console.WriteLine("ワンワン");
}
}
class Program
{
static void Main()
{
Animal a = new Dog();
a.Speak(); // 実行時には Dog の Speak() が呼ばれる
}
}
このように、同じ Speak()
呼び出しでも、実際には派生クラスの Dog
のメソッドが呼び出されます。
virtual
と override
キーワードが重要です。