码迷,mamicode.com
首页 > Windows程序 > 详细

C#基础知识之override和new的区别

时间:2016-04-26 14:18:49      阅读:289      评论:0      收藏:0      [点我收藏+]

标签:

override

  • override是派生类用来重写基类方法的。调用的派生类方法,如需调用基类方法用base关键字
  • override不能重写非虚方法或静态方法。
  • override重写必须用abstract、override、virtrual修饰的方法。

new

  • new 是派生类用来隐藏基类方法的,在派生类中看不到基类方法,但调用的还是基类的方法。
  • 如果在派生类中要隐藏基类方法而不用new关键字,而不用new关键字,编译时会出现一个警告,提示如果是要隐藏基类中的方法,请使用new关键字。
  • new可以隐藏基类中的普通方法也可以是虚方法。
  • 如果在派生类中用private来修饰new 方法,那么只在该派生类中隐藏了基类中的方法,在该派生类之外,相当于没有隐藏基类中的方法;
  • 如果在派生类中隐藏了基类中的方法,在该派生类的派生类中,将延续对该派生类对基类方法的隐藏。
 public class Program
    {
        static void Main(string[] args)
        {
            A a = new A();
            a.Test();
            B b = new B();
            b.Test();
            A c = new B();
            c.Test();
            A d = new C();
            d.Test();
            Console.ReadLine();
        }
    }
    public class A
    {

        public virtual void Test()
        {
            Console.WriteLine("A Test()");

        }

    }
    public class B : A
    {
        private new void Test()
        {
            Console.WriteLine("b Test()");

        }
    }
    public class C : B
    {

        public override void Test()
        {
            Console.WriteLine("C Test()");
        }
    }

C#基础知识之override和new的区别

标签:

原文地址:http://www.cnblogs.com/liujie2272/p/5407628.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!