日期:2014-05-18  浏览次数:20564 次

虚函数和抽象函数有什么区别!
二者的主要区别是什么
我感觉就是一样的
但是为什么有???

------解决方案--------------------
虛函數:由virtual声明,它允许在派生类中被重写
public class myclass
{
public virtual int func1()
{
...
}
}
class myclass1:myclass
{
public override int func1()
{
...
}
}

抽象类、抽象函數:由abstract声明,在抽象类中可以定义抽象方法,抽象方法沒有执行代码,派生类中必须继承它,提供其执行代码
public abstract class myclass
{
public abstract int func1();
}
public class myclass1:myclass
{
public override int func1()
{
...
}
}

------解决方案--------------------
主要区别就是自身是否包含实现
------解决方案--------------------
共同点是都可以通过override重写,而override是面向对象的特征之一多态性的实现基础
------解决方案--------------------
顶一下,viena很热心,说的很正点
------解决方案--------------------
探讨
虚方法表示该方法是不完全的,可在派生类中通过override重写,可以自身包含实现
抽象方法是隐式的虚方法,自身不包含实现,必须在派生类中实现

------解决方案--------------------
viena 说得很详细
------解决方案--------------------

用abstract声明类的时候这个类不能被实例化
abstract生命方法的时候,不能包含方法实体
抽象类不一定非得包含抽象方法,但是抽象方法只能在抽象类中生命
virtrual则可以生命方法实体,子类中若没有override这个方法,则调用的是父类中的virtual方法
设计的时候具体看父类和子类之间是什么关系