关于抽象、继承中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

 

转载于:https://www.cnblogs.com/luolei05/archive/2012/03/06/2381505.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值