C#ベースnew、overrideで複数の区別を実現

1502 ワード

一、newは親クラスの同名を隠す方法にすぎない.このメソッドは、ベースクラスと親クラスに存在します.
 
namespace ConsoleApplication1

{

    class Program

    {

        static void Main(string[] args)

        {

            BaseClass bcdc = new DerivedClass();

            bcdc.Method2(); // :Base - Method2

            Console.Read();

        }

        public class BaseClass

        {

            public void Method2()

            {

                Console.WriteLine("Base - Method2");

            }

        }

        public class DerivedClass : BaseClass

        {

            public new void Method2() // , 。

            {

                Console.WriteLine("Derived - Method2");

            }

        }

    }

}


二、override.子クラスで親クラスの同じメソッド名を書き換えます.親クラスはabstract、virtualでのみ修飾できます.
namespace ConsoleApplication1

{

    class Program

    {

        static void Main(string[] args)

        {

            BaseClass bcdc = new DerivedClass();

            bcdc.Method2(); // : Derived - Method2

            Console.Read();

        }

        public class BaseClass

        {

            public virtual void Method2()

            {

                Console.WriteLine("Base - Method2");

            }

        }

        public class DerivedClass : BaseClass

        {

            public override void Method2() // 

            {

                Console.WriteLine("Derived - Method2");

            }

        }

    }

}