C#中virtual 和abstract用在方法前面有什么不同?

guo_jianwen 2009-03-30 08:05:46
见题!
...全文
425 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
LiuShanLiang 2012-10-16
  • 打赏
  • 举报
回复
这两者还有没有其他区别,比方说,把子类赋给一个基类对象时。[Quote=引用 2 楼 的回复:]

一、Virtual方法(虚方法)

virtual 关键字用于在基类中修饰方法。virtual的使用会有两种情况:

情况1:在基类中定义了virtual方法,但在派生类中没有重写该虚方法。那么在对派生类实例的调用中,该虚方法使用的是基类定义的方法。

情况2:在基类中定义了virtual方法,然后在派生类中使用override重写该方法。那么在对派生类……
[/Quote]
sushou2009 2009-04-01
  • 打赏
  • 举报
回复
可以简单的理解为:
虚方法不能约束子类
抽象方法可以约束子类
fskjb01 2009-03-31
  • 打赏
  • 举报
回复
virtual有方法体
abstract没有方法体
fskjb01 2009-03-31
  • 打赏
  • 举报
回复
virtual有方法体
abstract没有方法体
龙宜坡 2009-03-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 vrhero 的回复:]
virtual方法可以被派生类override...

abstract方法必须被派生类override...
[/Quote]
哈哈潜伏哥 2009-03-31
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fengjian_428 的回复:]
一、Virtual方法(虚方法)

virtual 关键字用于在基类中修饰方法。virtual的使用会有两种情况:

情况1:在基类中定义了virtual方法,但在派生类中没有重写该虚方法。那么在对派生类实例的调用中,该虚方法使用的是基类定义的方法。

情况2:在基类中定义了virtual方法,然后在派生类中使用override重写该方法。那么在对派生类实例的调用中,该虚方法使用的是派生重写的方法。

二、Abstract方法(抽象…
[/Quote]


都是对的,不过这个说的详细点,容易懂点,建议结贴考虑。
guo_jianwen 2009-03-31
  • 打赏
  • 举报
回复
大侠们,可不可以用几个例子来说明啊,咱们从实际出发
santawcj 2009-03-30
  • 打赏
  • 举报
回复
virtual是虚方法,一定要有方法体,在他的派生类中可以用override重写这个方法体,也可以不用重写,用原始的方法。
abstract 是抽象方法,没有方法体,只要声明这个方法就行了,但是在派生类中一定要用override重写这个方法。
lidss1234 2009-03-30
  • 打赏
  • 举报
回复
呵呵..进来学习学习.
C_sdnElf 2009-03-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 vrhero 的回复:]
virtual方法可以被派生类override...

abstract方法必须被派生类override...
[/Quote]

up
tmd456 2009-03-30
  • 打赏
  • 举报
回复
virtual方法可以被派生类override...

abstract方法必须被派生类override...
xiaoyyyyyyyyyyy 2009-03-30
  • 打赏
  • 举报
回复
在C#中:

抽象方法仅有声明,而没有任何实现,如abstract Method();,虚方法却不能如此
子类继承父类,可以对父类中的虚方法进行重写、覆盖、不处理三种处理,对抽象方法却必须实现

0.0新手吧 。看看书 就知道了
fengjian_428 2009-03-30
  • 打赏
  • 举报
回复
一、Virtual方法(虚方法)

virtual 关键字用于在基类中修饰方法。virtual的使用会有两种情况:

情况1:在基类中定义了virtual方法,但在派生类中没有重写该虚方法。那么在对派生类实例的调用中,该虚方法使用的是基类定义的方法。

情况2:在基类中定义了virtual方法,然后在派生类中使用override重写该方法。那么在对派生类实例的调用中,该虚方法使用的是派生重写的方法。

二、Abstract方法(抽象方法)

abstract关键字只能用在抽象类中修饰方法,并且没有具体的实现。抽象方法的实现必须在派生类中使用override关键字来实现。
vrhero 2009-03-30
  • 打赏
  • 举报
回复
virtual方法可以被派生类override...

abstract方法必须被派生类override...

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧