首页 > 技术文章 > C# 基础 new 、override实现多台区别

huaan011 2015-06-29 23:01 原文

一、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");
            }
        }
    }
}

  

推荐阅读