Abstract和Virtual的区别

Abstractvirtual的区别

Virtual(虚拟)

1.修饰方法、属性、索引器或事件声明

2.允许在派生类中重写这些对象。说明:派生类可以重写这些方法,也可以不重写这些方法

3.修饰方法时注意:(可以有方法体)

l         调用虚方法时,将为重写成员检查该对象的运行时类型。将调用大部分派生类中的该重写成员,如果没有派生类重写该成员,则它可能是原始成员。

l         默认情况下,方法是非虚拟的。不能重写非虚方法。

l         virtual 修饰符不能与 staticabstract, private override 修饰符一起使用。

4.虚拟属性的行为与抽象方法一样。

l         在静态属性上使用 virtual 修饰符是错误的。

l         通过包括使用 override 修饰符的属性声明,可在派生类中重写虚拟继承属性。

Abstract(抽象)

1.修饰类、方法、属性、索引器及事件

2.在类声明中使用 abstract 修饰符以指示某个类只能是其他类的基类。

3.标记为抽象或包含在抽象类中的成员必须通过从抽象类派生的类来实现。说明:派生类必须实现

4.抽象类具有以下特性:

·      抽象类不能实例化。

·      抽象类可以包含抽象方法和抽象访问器。

·      不能用 sealedC# 参考)修饰符修改抽象类,这意味着抽象类不能被继承。

·      从抽象类派生的非抽象类必须包括继承的所有抽象方法和抽象访问器的实实现。

在方法或属性声明中使用 abstract 修饰符以指示方法或属性不包含实现。

5.抽象方法具有以下特性:(没有方法体)

·      抽象方法是隐式的虚方法。

·      只允许在抽象类中使用抽象方法声明。

·      因为抽象方法声明不提供实际的实现,所以没有方法体;方法声明只是以一个分号结束,并且在签名后没有大括号 ({ })。例如: public abstract void MyMethod();

·      实现由一个重写方法overrideC# 参考)提供,此重写方法是非抽象类的一个成员。

·      在抽象方法声明中使用 static virtual 修饰符是错误的。

6.抽象属性的行为与抽象方法一样。

·      在静态属性上使用 abstract 修饰符是错误的。

在派生类中,通过包括使用 override 修饰符的属性声明,可以重写抽象的继承属性。

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值