vmware虚拟化面试题题 C#虚方法与重写,该怎么处理

C#面试题和答案_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
C#面试题和答案
上传于|0|0|文档简介
&&C#面试题和答案
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩16页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢普通函数使用重写与虚方法重写的区别。
多态的用法已经非常清楚了。但是在C#中,还是有个很奇特的事情,就是普通的方法也可以重写。但是重写的时候不需要使用override,而是使用new,示例如下。
基类一:MyClass
&public class
& public string name { }
& public string GetName()
派生类:Mc
 public class Mc : MyClass
  public new
string GetName()
   return "hello, " +
使用时代码如下。
 MyClass mc = new Mc() { name = "tom"
 Console.WriteLine(mc.GetName());
 Console.WriteLine((mc as
Mc).GetName());
显示结果如下:
hello, tom
OK,结果有了,从结果来看,很清楚。如果此类以基类来处理,即mc作为MyClass类来处理,则会调用基类的GetName方法,如果转换成Mc类后,就调用Mc类的GetName方法。
那么,再在研究一下原理。很容易有以下的结。
和虚方法不同的,普通方法GetName在基类和派生类中都有,而虚方法是共用一个。
所以在调用时,以不同的级别(作为基类或派生类)调用时,就会有不同的结果。
另外,注意一点,如果不加new关键字,会有以下提示。
“Mc.GetName()”隐藏了继承的成员“MyClass.GetName()”。如果是有意隐藏,请使用关键字
经研究,目前的结论是,如果不加,系统会编译时按加了new关键字的情况来处理,即加不加都是一样的,不过不加系统会警告。可能加了以后比较清楚直观一点,一看就知道这是基类有的代码。
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 java虚拟机面试题 的文章

 

随机推荐