演習課題「メソッドのオーバーライド」
右のコードエリアには、あらかじめCreatureクラスと、Cretureクラスを継承したHumanクラスが定義されています。
CretureクラスのWalkメソッドを、HumanクラスのWalkメソッドでオーバーライドしてください。
期待する出力値
早く歩いた
演習課題「メソッドのオーバーライド」
右のコードエリアには、あらかじめBoxクラスと、Boxクラスを継承したMagicBoxクラスが定義されています。
BoxクラスのOpenメソッドを、MagicBoxクラスのOpenメソッドでオーバーライドしてください。
期待する出力値
モノマネモンスターが襲ってきた
#03:メソッドのオーバーライド
クラスを継承したときに利用できる、メソッドのオーバーライドについて学習します。オーバーライドを使うと、基底クラスが持つメソッドを、派生クラスで再定義できます。
オーバーライドを利用すると、基底クラスが持つメソッドを、派生クラスで書き換えて再定義することができます。// メソッドのオーバーライド
using System;
class Lesson08
{
public static void Main()
{
var box = new Box("鋼鉄の剣");
box.Open();
var magicBox = new MagicBox("モノマネモンスター");
magicBox.Look();
magicBox.Open();
}
}
class Box
{
public string Item { get; private set; }
public Box(string item)
{
Item = item;
}
public virtual void Open()
{
Console.WriteLine("宝箱を開いた。" + Item + "を手に入れた。");
}
}
class MagicBox : Box
{
public MagicBox(string item) : base(item)
{
}
public void Look()
{
Console.WriteLine("宝箱は妖しく輝いている。");
}
public override void Open()
{
Console.WriteLine("宝箱を開いた。" + Item + "が襲ってきた!");
}
}
メソッドにvirtualキーワードをつけて定義すると、そのメソッドは、仮想メソッドとなります。
オーバーライドできるメソッドは、仮想メソッドであり、非仮想メソッドは、オーバーライドできません。
【C#】「メソッドのオーバーライド」派生クラスで基本クラスと同じ名前のメソッドの中身を変える - Cプロ
https://cprogram.net/c-sharp-method-override/
C#入門/オーバーライド - WisdomSoft
http://www.wisdomsoft.jp/360.html
C# オーバーライドのサンプル | ITSakura
https://itsakura.com/csharp-override
override 修飾子 - C# リファレンス | Microsoft Docs
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/keywords/override
virtual - C# リファレンス | Microsoft Docs
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/keywords/virtual