zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    python基础(常量,数据类型,if)
    c字符串操作函数
    磁盘读写,合并排序字符串
    5个学生,3门成绩,输入信息,保存到文件
    关于MQTT、HTTP、WebService
    循环队列Circular Queue
    ISR中断服务程序
    PID控制
    Linux定时器接口
    Embedded Agent
  • 原文地址:https://www.cnblogs.com/zhangchenliang/p/2142957.html
Copyright © 2011-2022 走看看