抽象对象和接口
抽象
- 面向对象中的抽象类
- 可用于表示显示世界中的抽象概念
- 是一种只能定义类型,而不能产生对象的类
- 只能被继承并重写相关函数
- 直接特征是相关函数没有完整的实现
抽象类与虚函数
- C++语言中没有抽象类的概念
- C++中通过纯函数实现抽象类
- 纯函数是指定义原型的成员函数
- 一个C++类中存在纯函数就成为了抽象函数
纯虚函数的语法规则
class Shape
{
public:
virtual double area() = 0;
};
“=0” 用于告诉编译器当前是声明纯虚函数,因此不需要定义函数体
- 抽象类只能用作父类被继承
- 子类必须实现纯虚函数的具体功能
- 纯虚函数被实现后成为虚函数
- 如果子类没有实现纯虚函数,则子类成为抽象类
接口
满足以下条件的C++类为接口
- 类中没有定义任何的成员变量
- 所有的成员函数都是公有的
- 所有的成员函数都是纯虚函数
- 接口是一种特殊的抽象类
小结
- 抽象类用于描述现实世界中的抽象概念
- 抽象类只能被继承不能创建对象
- C++中没有抽象类的概念
- C++中通过纯虚函数实现抽象类
- 类中只存在纯虚函数的称为接口
- 接口是一种特殊的抽象类