[C#]メモnewとoverrideキーワード
3357 ワード
C#関数のoverrideを実装するには、C++と同様に、親の関数をvirtualキーワードで明記し、サブクラスでoverrideキーワードで書き換えた関数を示す必要があります.
サブクラスの同名関数定義では、何も書かない場合やnewキーを使用すると、親クラスの同名関数が非表示になることを示します.
つまり、子には子の関数があり、親には親の関数があり、井戸水は川の水を犯さない.
BがAのサブクラスである場合、A a=new B()の方法でBのインスタンスをインスタンス化し、その関数を呼び出すのは依然としてAを呼び出す関数であることに注意してください.
簡潔な例:
サブクラスの同名関数定義では、何も書かない場合やnewキーを使用すると、親クラスの同名関数が非表示になることを示します.
つまり、子には子の関数があり、親には親の関数があり、井戸水は川の水を犯さない.
BがAのサブクラスである場合、A a=new B()の方法でBのインスタンスをインスタンス化し、その関数を呼び出すのは依然としてAを呼び出す関数であることに注意してください.
簡潔な例:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace PolymophismTest
{
class Program
{
static void Main(string[] args)
{
A btest = new B();
btest.F(); // "B.F"
btest.G(); // "A.G"
}
}
public class A
{
public virtual void F()
{
Console.WriteLine("A.F");
}
public void G()
{
Console.WriteLine("A.G");
}
}
public class B : A
{
public override void F()
{
Console.WriteLine("B.F");
}
public new void G()
{
Console.WriteLine("B.G");
}
}
}