博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
override与new的区别
阅读量:6720 次
发布时间:2019-06-25

本文共 768 字,大约阅读时间需要 2 分钟。

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

代码如下:

None.gif
 
public
 
class
 baseClass
ExpandedBlockStart.gif    
{
InBlock.gif        
public baseClass()
ExpandedSubBlockStart.gif        
{
InBlock.gif            Method1();
ExpandedSubBlockEnd.gif        }
InBlock.gif        
public virtual void Method1()
ExpandedSubBlockStart.gif        
{
InBlock.gif            Console.WriteLine(
"Method1 in baseClass");
ExpandedSubBlockEnd.gif        }
ExpandedBlockEnd.gif    }
None.gif
None.gif    
public
 
class
 derivedClass : baseClass
ExpandedBlockStart.gif    
{
InBlock.gif        
private int value;
InBlock.gif        
public derivedClass()
ExpandedSubBlockStart.gif        
{
InBlock.gif            value 
= 2;
ExpandedSubBlockEnd.gif        }
InBlock.gif        
public override void Method1()
ExpandedSubBlockStart.gif        
{
InBlock.gif            
if (value == 2)
InBlock.gif                Console.WriteLine(
"value==2");
InBlock.gif            
else
InBlock.gif                Console.WriteLine(
"value!=2");           
ExpandedSubBlockEnd.gif        }
ExpandedBlockEnd.gif    }

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

正确答案:

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

引用至:

你可能感兴趣的文章
C# String与string的区别
查看>>
jQuery-强大的jQuery选择器 (详解)[转]
查看>>
随记:linux-PAM简介
查看>>
我的友情链接
查看>>
企业三层交换网络(VLAN)+RouterOS解决方案
查看>>
关于OpenCart 后台(Dashboard)首页打开很慢的问题_已迁移
查看>>
mysql load data遇到的两个错误和解决方法
查看>>
MAC使用ab并发测试
查看>>
争议ToR——数据中心架构与布线(update)
查看>>
利用Django徒手写个静态页面生成工具
查看>>
NRPE出现:CHECK_NRPE: Error - Could not complete SSL handshake.错误!
查看>>
Oracle中大批量删除数据的方法
查看>>
如何成为一名优秀的web前端工程师(前端攻城师)?
查看>>
CentOS系统常规初始化操作
查看>>
Linux学习:安装CentOS 6.7以及CentOS 7.1
查看>>
windows安装程序遇到HRESULT: 0x80070422
查看>>
Docker使用Dockerfile创建支持ssh服务自启动的容器镜像
查看>>
什么是控制反转(源自百度)
查看>>
Hyper-V 2016 系列教程50 某德国制造型企业上线案例分享
查看>>
常用 yum 源(repositories)
查看>>