virtual
したがって、修飾子と一緒に修飾子を使用することはできないようoverride
です。
virtual
- オーバーライド可能なメソッド
override
- 親のクラスで同じ名前のメソッドをオーバーライドしているメソッド
これにより、子クラスのメソッドをオーバーライドすると、その子に子がある場合、そのメソッドを再度オーバーライドすることはできないと思います。
そして、メソッド宣言に and を入れるoverride
と、C# でコンパイル エラーが発生すると言っても過言ではありません。virtual
ただし、以下で作成したコードがなぜそのように機能するのか理解できません
using System;
public class DrawingObject
{
public virtual void Draw()
{
Console.WriteLine("Drawing Object");
}
}
public class DrawDemo
{
public static int Main()
{
DrawingObject[] dObj = new DrawingObject[3];
dObj[0] = new DrawingObject();
dObj[1] = new Line();
dObj[2] = new LittleLine();
foreach (DrawingObject drawObj in dObj)
{
drawObj.Draw();
}
Console.Read();
return 0;
}
}
public class Line : DrawingObject
{
public override void Draw()
{// the method above me is in fact virtual because LittleLine overid it?
Console.WriteLine("I'm a Line.");
}
}
public class LittleLine : Line
{
public override void Draw()
{
Console.WriteLine("I'm a Little Line.");
}
}
出力は次のとおりです。
描画オブジェクト
私はラインです。
私はリトルラインです。
したがって、 の draw メソッドは、Line
によってオーバーライドされたように見えますLittleLine
。このコードは実際にはオーバーライドしていませんか、それともコンパイラが他のトリックを行っていますか? virtual
または、 andのコンテキストを理解していませんoverride
か?