• override与new的区别


    昨天参加面试,遇到一个关于new修饰符的题,由于本人不慎,给搞错了,纠其原因,还是因为我的C#基础知识不牢固,关于override与new的区别平时没有太注意。在此,为大家分享一下:
    代码如下:


     public class baseClass
        
    {
            
    public baseClass()
            
    {
                Method1();
            }

            
    public virtual void Method1()
            
    {
                Console.WriteLine(
    "Method1 in baseClass");
            }

        }


        
    public class derivedClass : baseClass
        
    {
            
    private int value;
            
    public derivedClass()
            
    {
                value 
    = 2;
            }

            
    public override void Method1()
            
    {
                
    if (value == 2)
                    Console.WriteLine(
    "value==2");
                
    else
                    Console.WriteLine(
    "value!=2");           
            }

        }


    问题:
    1、初始化一实例:baseClass tempClass=new derivedClass()之后,会输出什么结果?
    2、把derivedClass类中的override换成 new之后,又会输出什么结果?

    正确答案:
    1、value!=2
    2、Method1 in baseClass
    MSDN上说:new 关键字在用作修饰符时,可以显式隐藏从基类继承的成员。隐藏继承的成员意味着该成员的派生版本将替换基类版本。也就是说,在用new关键字时,派生类与基类的这两个相同签名的方法已经没有任何联系了。
    而用override时,它与new的区别主要是,overrid是重写了基类的方法,new是隐藏、覆盖了基类的方法。

    引用至:http://www.cnblogs.com/anlyren/archive/2007/11/07/new.html

  • 相关阅读:
    Linux安装cx_Oracle
    LVM分区
    命令行重启远程桌面服务
    常用Linux命令
    自动清理N天前的二进制日志
    MySQL常用操作
    Java里的堆(heap)栈(stack)和方法区(method)
    SpringMVC 八大注解
    Spring Cloud原理详解
    java线程的生命周期及五种基本状态
  • 原文地址:https://www.cnblogs.com/zhangchenliang/p/2142957.html
Copyright © 2020-2023  润新知