1 virtual
修饰的属性或函数
virtual
可以修饰属性或函数,但是不能修饰字段。- 虚函数前要有
virtual
修饰符,且必须要有实现 - 派生类可以重新基类的虚函数,派生类重写的函数前必须要有
override
关键字。如果基类的虚函数满足要求,派生类也可以无需重写该虚函数。
2 abstract
修饰的抽象类
- 抽象类不可以进行实例化,只有其派生类可以进行实例化
- 抽象类必须要包含抽象成员,即抽象函数或抽象属性
抽象成员,即前面要有abstract
修饰符 - 抽象函数在声明的基类中不能进行实现,在其派生类中必须要有实现
3 interface
接口
- 接口不能进行实例化,只能实例化其派生类
- 接口中所有的成员(即函数和属性)都默认是公有的,不能再声明任何访问修饰符。
- 接口中的所有函数都只有声明,而不能有实现,要在继承的类中来对接口中声明的函数进行实现
- 接口中不能有静态成员
4 接口和抽象类的不同
- 抽象类中只要包含有抽象成员即可,其它非抽象成员函数可以有自己的实现,而接口中的所有成员都不能有实现,必须要在其继承类中来进行实现。