[C#]メモnewとoverrideキーワード

3357 ワード

C#関数のoverrideを実装するには、C++と同様に、親の関数をvirtualキーワードで明記し、サブクラスでoverrideキーワードで書き換えた関数を示す必要があります.
サブクラスの同名関数定義では、何も書かない場合や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");

        }

    }

}