日期:2014-05-17  浏览次数:20805 次

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

------解决方案--------------------
virtual方法可以被派生类override...

abstract方法必须被派生类override...
------解决方案--------------------
一、Virtual方法(虚方法)

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

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

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

二、Abstract方法(抽象方法)

abstract关键字只能用在抽象类中修饰方法,并且没有具体的实现。抽象方法的实现必须在派生类中使用override关键字来实现。

------解决方案--------------------
在C#中:

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

0.0新手吧 。看看书 就知道了
------解决方案--------------------
virtual方法可以被派生类override... 

abstract方法必须被派生类override...
------解决方案--------------------
探讨
virtual方法可以被派生类override...

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

------解决方案--------------------
呵呵..进来学习学习.

------解决方案--------------------
virtual是虚方法,一定要有方法体,在他的派生类中可以用override重写这个方法体,也可以不用重写,用原始的方法。
abstract 是抽象方法,没有方法体,只要声明这个方法就行了,但是在派生类中一定要用override重写这个方法。
------解决方案--------------------
探讨
一、Virtual方法(虚方法)

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

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

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

二、Abstract方法(抽象…

------解决方案--------------------
探讨
virtual方法可以被派生类override...

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

------解决方案--------------------
virtual有方法体
abstract没有方法体
------解决方案--------------------
virtual有方法体
abstract没有方法体
------解决方案--------------------
可以简单的理解为:
虚方法不能约束子类
抽象方法可以约束子类