C++的虚函数与纯虚函数
C++项目看起来真的是太恼火了,源码阅读起来有点不便,幸亏有source insight 保命。C++有个很重要的特性,那就是多态。多态的实现主要是两种方式:一个就是函数的重载,另一个就是继承中对虚函数的重写。虚函数的引入对C++大型项目接口设计统一标准起到了非常重要的作用,与虚函数相对应的就是纯虚函数。
虚函数:用 virtual 标识标记的函数就是虚函数,只含有虚函数(且不含纯虚函数)的类就叫做虚类或者虚基类。虚函数必须要实现,可以是空函数体。被子类继承,子类不重写的话那就是直接基类的方法。
纯虚函数:同样含有 virtual 标识符,但是定义时函数则是在函数名后直接加 =0 定义;含有纯虚函数的类叫纯虚类,纯虚函数不用实现。子类只继承函数名,具体功能需要子类自己实现。
栗子奉上:
virtual void printTest(); //虚函数,需要函数体
virtual void printTest() = 0; //纯虚函数,只用定义
Java抽象类和接口
写过Java的人会发现,这个的功能特性与 java 的抽象类和接口的函数是类似的
抽象类:用 abstract 标识符标记的类就叫抽象类。抽象类的函数需要函数体,类似C++虚函数一样。
接口:与类(class)相对,用 Interface 标识符标记。接口只定义函数名,不具体实现。这个类似C++纯虚函数
直接栗子:
// 以下为多个文件
//-------------------- Base.java-----------------
package test;
abstra