C++——抽象类和接口
1. 面向对象中的抽象类1可用于表示现实世界中的抽象概念2是一种只能定义类型而不能产生对象的类3只能被继承并重写相关函数4直接特征是相关函数没有完整的实现2. C语言实现抽象类1C中没有抽象类的概念通过纯虚函数实现抽象类2纯虚函数指只定义原型的成员函数3一个C类中存在纯虚函数就成为了抽象类“0”用于告诉编译器当前是声明纯虚函数因此不需要定义函数体#include iostream #includestring using namespace std; class Shape { public: virtual double area() 0; }; class Rect : public Shape { int ma; int mb; public: Rect(int a, int b) { ma a; mb b; } double area() { return ma * mb; } }; class Circle : public Shape { int mr; public: Circle(int r) { mr r; } double area() { return 3.14 * mr * mr; } }; void area(Shape* p) { double r p-area(); cout r r endl; } int main() { Rect rect(1, 2); Circle circle(10); area(rect); area(circle); }3.抽象类与纯虚函数1抽象类只能用作父类被继承2子类必须实现纯虚函数的具体功能3纯虚函数被实现后成为虚函数4如果子类没有实现纯虚函数则子类成为抽象类4.满足下面的条件的C类则称为接口1类中没有定义任何的成员变量2所有的成员函数都是公有的3所有的成员函数都是纯虚函数4接口是一种特殊的抽象类