前言:在前面的文章中,我们已经对虚方法和抽象方法有了了解,那么本博文将阐述它们之间的区别,一起来看看吧。
一.在定义上:
虚方法用关键字virtual
来进行声明,不允许再有static,abstract,或override修饰符
访问修饰符 virtual 函数返回类型 函数名(参数表) {函数体};
抽象方法用关键字abstract
来进行声明,只在抽象类中定义,方法修饰符不能使用private, virtual, static.
访问修饰符 abstract class abstract_name{}
二.在实现上:
虚方法 | 抽象方法 |
---|---|
虚拟可以直接实例化 | 抽象不可以实例化 |
虚方法可以在任何非密封类中声明 | 抽象方法只能在抽象类中声明 |
虚方法可以在派生类中重写也可以不重写 | 抽象方法必须在派生类进行重写 |
虚方法有实现部分 | 抽象方法没有实现部分 |
虚方法不能是私有的 | 抽象方法是私有的、受保护的 |
三.在作用上:
在面向对象方法中,抽象类主要用来进行类型隐藏。构造出一个固定的一组行为的抽象描述;
当在基类中进行虚方法的定义以后,在派生类中可以对其方法进行调用,而且可以通过重写来改变其中实现的功能来实现自己的一些功能;
四.使用场景:
当所有子类都要实现某一功能时,使用虚拟,将这些功能包装在基类中,在派生类中用关键字base
引用;
当功能不相关时,使用抽象类;
若有忽略不足之处希望大家及时提出!😃😦😦😦