zoukankan      html  css  js  c++  java
  • C#基础知识四之override和new的区别

    override

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

    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()");
            }
        }
  • 相关阅读:
    [导入]习惯修改别人的程序吗?
    [导入]感悟一首:"原来你也在这里"
    [导入]人生的高度
    [导入]nslookup工具的使用方法(转)
    [导入]回忆ASP!
    [导入]论坛的修改完成
    [导入]还原精灵安装失败!
    [导入]IE6无提示关闭窗口,不是利用activeX
    加密算法
    澄清VB调用API时字符串参数的困惑
  • 原文地址:https://www.cnblogs.com/liujie2272/p/5407628.html
Copyright © 2011-2022 走看看