C#中虚拟方法和抽象方法的区别,一起研究研究?

前言:在前面的文章中,我们已经对虚方法抽象方法有了了解,那么本博文将阐述它们之间的区别,一起来看看吧。

一.在定义上:

虚方法用关键字virtual来进行声明,不允许再有static,abstract,或override修饰符

访问修饰符 virtual 函数返回类型 函数名(参数表) {函数体}

抽象方法用关键字abstract来进行声明,只在抽象类中定义,方法修饰符不能使用private, virtual, static.

 访问修饰符 abstract class abstract_name{}

二.在实现上:

虚方法 抽象方法
虚拟可以直接实例化 抽象不可以实例化
虚方法可以在任何非密封类中声明 抽象方法只能在抽象类中声明
虚方法可以在派生类中重写也可以不重写 抽象方法必须在派生类进行重写
虚方法有实现部分 抽象方法没有实现部分
虚方法不能是私有的 抽象方法是私有的、受保护的

三.在作用上:

在面向对象方法中,抽象类主要用来进行类型隐藏。构造出一个固定的一组行为的抽象描述;
当在基类中进行虚方法的定义以后,在派生类中可以对其方法进行调用,而且可以通过重写来改变其中实现的功能来实现自己的一些功能;

四.使用场景:

当所有子类都要实现某一功能时,使用虚拟,将这些功能包装在基类中,在派生类中用关键字base引用;

当功能不相关时,使用抽象类;


若有忽略不足之处希望大家及时提出!😃😦😦😦

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章