关于抽象、继承中virtual、abstract、override、new关键字的区别

1.virtual是虚方法,方法里可以有实现,也可以没有实现。abstract是抽象方法。没有方法体,没有实现。其实这要分具体情况判断。如果写一个方法,方法体没有啥实现的话,那么就选用抽象方法。举个例子:交通工具:都有跑的方法,那么定义一个交通工具跑的方法,那么此方法是虚方法还是抽象方法呢? 我们来分析一下,很明显:交通工具----有汽车、轿车、卡车。等等。。。都有跑的方法,汽车是频率较快的跑,卡车是频率慢慢的跑,轿车是频率很快的跑。很明显。都有各自跑的方法,所以,我们干脆 交通工具里面的 跑的方法 什么都不做。因为没有啥实际意义。所以定义为抽象方法。 

2.说通俗点吧:new是实例化一个新的,override是重新写方法,反正就是New是拿写好的东西来用,override是看写好的东西不爽,拿过来改一下再用。

子类必须实现abstract方法,而可以选择性实现virtual方法

override是重载所继承的类型方法的 而被继承的类方法必须加virtual 才可以被重载

如果父类存在同名方法,同名方法是abstract的话,那么就是override,如果没有修饰符则使用new重写。


new 运算符 

1.用于创建对象和调用构造函数 

例:Class_Test MyClass = new Class_Test(); 

2.也用于为值类型调用默认的构造函数 

例:int myInt = new int(); 

myInt 初始化为 0,它是 int 类型的默认值。该语句的效果等同于:int myInt = 0; 

3.不能重载 new 运算符。 

4.如果 new 运算符分配内存失败,则它将引发 OutOfMemoryException 异常。 

new 修饰符 

使用 new 修饰符显式隐藏从基类继承的成员。若要隐藏继承的成员,请使用相同名称在派生类中声明该成员,并用 new 修饰符修饰它。 

 

参考:

http://topic.csdn.net/u/20120305/00/a49a0f68-4ff9-49b4-ba16-c571a5aee52f.html

 

posted on 2012-03-06 11:02  luolei05  阅读(256)  评论(0编辑  收藏  举报