c#中关于虚函数和抽象方法的使用和调用的原理几乎和C++一致,尤其是在多态性方面,很容易搞混。下面是C#中他们的区别。

virtual和abstract都是用来修饰父类的,通过覆盖父类的定义,让子类重新定义。

1.virtual修饰的方法必须有实现(哪怕是仅仅添加一对大括号),而abstract修饰的方法一定不能实现。
2.virtual可以被子类重写,而abstract必须被子类重写。
3.如果类成员被abstract修饰,则该类前必须添加abstract,因为只有抽象类才可以有抽象方法。
4.无法创建abstract类的实例,只能被继承无法实例化。

简单说,抽象方法是需要子类去实现的。虚方法是已经实现了的,可以被子类覆盖,也可以不覆盖,取决于需求。

且抽象方法和虚方法都可以供派生类重写。

最后修改日期:十一月 22, 2019

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。