重写和隐藏的疑问 我只知道override,是覆盖。大家来帮忙啊。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你说错了,new重写是实现了隐藏,而virtual/override则是重写。 new重写是实现了隐藏virtual声明以后, 可以覆写, 这是面向对像的基本要求, 怎么说叱,我觉得你还是看一下关于面向对像方面的书吧, 这样有好处, 比如,你的产品中有一个别人写的基类hisBaseClass,又有一个派生类myDerivedClass,派生类中有一个基类中没有的方法myMethod()。现在基类的作者要重写基类,他为其基类同样添加一个myMethod,但实现的功能和你的myMethod不一样。此时,你就应该使用new定义你的myMethod()方法,以避免将来的代码上所存在的潜在的冲突。 基类用virtual 定义的方法,子类就可以用override对该virtual方法进行重写.基类的成员(private/public)方法,子类如果也有同样的方法,系统则默认子类方法将基类方法隐藏.一般情况下,对于子类来说,使用没有什么区别.但是在以下情况下,就会有差异:基类hisBaseClassprivate myMethod()子类myDerivedClassprivate new myMethod()1.hisBaseClass myClass1 = new myDerivedClass();当使用该方法进行实例化myClass1时,再使用myCLass1.myMethod();则,系统默认调用的是hisBaseCLass的的myMethod()方法.2.myDerivedClass myCLass1 = new myDerivedClass();当使用该方法进行实例化myClass1时,再使用myCLass1.myMethod();则,系统默认调用的是myDerivedClass的myMethod()方法. 基类hisBaseClassprivate virtual myMethod()子类myDerivedClassprivate override myMethod()1.hisBaseClass myClass1 = new myDerivedClass();当使用该方法进行实例化myClass1时,再使用myCLass1.myMethod();则,系统默认调用的是myDerivedClass的myMethod()方法.2.myDerivedClass myCLass1 = new myDerivedClass();当使用该方法进行实例化myClass1时,再使用myCLass1.myMethod();则,系统默认调用的也是myDerivedClass的myMethod()方法. rices() 谢谢你的详细解答了 求助winform连接web service,如何加密不被看到 重复发问了!指针的用法 .net发布网站问题 ComboBox索引下拉条自动展开问题 richtextbox的问题 DataTable如何去掉值全为NULL或者空的列 急!急!急!请教一些小问题? 带参数的Sql语句的问题 在线等 很急 麻烦大哥们解决下 请前辈推荐几本C# 的好书 OleDb的Bug? 如何在DataGrid里的用HyperLinkColumn传两个参数??? [[在线等]] *** 顶者加分 !!!!!**** up 者加分!!!!*** [[在线等]] C# 安全期计算器,需要的朋友可下载。有效至8月12日
virtual声明以后, 可以覆写, 这是面向对像的基本要求,
怎么说叱,我觉得你还是看一下关于面向对像方面的书吧, 这样有好处,
但是在以下情况下,就会有差异:
基类hisBaseClass
private myMethod()
子类myDerivedClass
private new myMethod()1.hisBaseClass myClass1 = new myDerivedClass();
当使用该方法进行实例化myClass1时,再使用myCLass1.myMethod();
则,系统默认调用的是hisBaseCLass的的myMethod()方法.2.myDerivedClass myCLass1 = new myDerivedClass();
当使用该方法进行实例化myClass1时,再使用myCLass1.myMethod();
则,系统默认调用的是myDerivedClass的myMethod()方法.
private virtual myMethod()子类myDerivedClass
private override myMethod()1.hisBaseClass myClass1 = new myDerivedClass();
当使用该方法进行实例化myClass1时,再使用myCLass1.myMethod();
则,系统默认调用的是myDerivedClass的myMethod()方法.2.myDerivedClass myCLass1 = new myDerivedClass();
当使用该方法进行实例化myClass1时,再使用myCLass1.myMethod();
则,系统默认调用的也是myDerivedClass的myMethod()方法.
谢谢你的详细解答了