0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【C#】overrideとは?

Posted at

オーバーライド(override)とは?

オーバーライドとは、
親クラスのメソッドを子クラスで上書きする」ことです。

C#では、継承したクラスの動きを部分的に変えたいときに使います。

class Animal
{
    public virtual void Speak()
    {
        Console.WriteLine("動物が鳴く");
    }
}

class Dog : Animal
{
    public override void Speak()
    {
        Console.WriteLine("ワンワン!");
    }
}

上の例では、Animal クラスが「動物が鳴く」という基本の動作を定義しています。
でも、犬は「動物が鳴く」ではなく「ワンワン!」と鳴きますよね?
そのため、子クラス Dogoverride を使って、Speak() の動作を上書きしています。

virtualとoverrideはセット

  • 親クラスのメソッドには virtual が必要
  • 子クラスで上書きするときに override を使う
class Animal
{
    public virtual void Speak() { ... }  // オーバーライドできるようにする
}

class Dog : Animal
{
    public override void Speak() { ... } // 実際に上書きする
}

virtual がないメソッドは、そもそも上書きできません
つまり、オーバーライド可能にするかどうかは、親クラスが決めるわけです。

overrideの実行例

Animal a = new Animal();
a.Speak(); // 出力: 動物が鳴く

Animal d = new Dog();
d.Speak(); // 出力: ワンワン!

変数の型はどちらも Animal なのに、
実際の中身が Dog のときは「ワンワン!」と出力されます。

まとめ

用語 意味
virtual オーバーライド可能にする(親クラス側)
override オーバーライドする(子クラス側)

オーバーライドを使うと、継承したクラスごとに動作を変えられるようになります。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?