我爱Aspx >> Asp.Net >> msdn上的一个例子看不太懂,请高手讲解一下,关于virtual,new,override的第3楼. 由 sakai9784 于 2007-6-27 17:23:20 发表
http://noriko529784.blog.163.com/大量开源代码和资料,需要的在主页中注明电子邮箱
第4楼. 由 maoxiong25 于 2007-6-27 17:25:44 发表
public new virtual void DescribeCar()
表示基类中的DescribeCar方法被隐藏起来。而执行当前类的DescribeCar()方法。
public override void DescribeCar()只是重写一下基类的方法而以。
第5楼. 由 lianshaohua 于 2007-6-27 17:30:58 发表
这是一个显著的多态的例子
这需要从car类看起:
DescribeCar()方法是Virtual,说明他的派生类可以重载这个方法;
其派生类:ConvertibleCar 中的DescribeCar()方法又是虚了,所以隐藏了Car()类的DescribeCar方法
派生类:Minivan 中重载了DescribeCar()方法.
(怎么说呢,如果基类中有虚方法,而在其派生类中重载了这个方法(override,且返回值参数一至),当把派生类的指针赋给基类的指针时,如果用基类的指针来调用这个重载的方法,那么就会在VMT虚方法表中去查找方法的地址,并进行调用,如果派生类重载了这个方法,那么基类的指针就调用派生类的重载的方法,如果没有实现,则基类指针就调用自已的虚方法)不知道我说明白了没有..
第6楼. 由 lianshaohua 于 2007-6-27 17:37:43 发表
Car[] cars = new Car[3];
cars[0] = new Car();
cars[1] = new ConvertibleCar();
Ҷƪл˵?
同志们:我记得有一个设置,可以..[07-06]
首页如何做导航[07-06]
$$$ public event MyDelegate On..[07-06]
问一下,winform大家用何种方式显..[07-06]
如何在.net实现自动关机[07-06]
简体Visual Stadio .NET 2003安装..[07-06]
把其他系统的数据转出成用友标准..[07-06]
很着急,VisualSourceSafe2005和..[07-06]
请教c#+access 登录的问题[07-06]
C#调用delphi制作的dll(非标准CO..[07-06]