C++接口编程:抽象类与纯虚函数实现规范契约
接口描述类的行为能力,不承诺具体实现。C++通过抽象类实现接口,勿与数据抽象概念混淆。
类含至少一个纯虚函数即为抽象类。纯虚函数声明:virtual 返回类型 函数名(参数) = 0;。示例:
class Box {
public:
virtual double getVolume() = 0; // 纯虚函数
private:
double length, breadth, height;
};
抽象类(ABC)作用:提供规范基类供继承,**不能实例化对象**,仅作接口。尝试实例化将编译报错。派生类必须实现所有纯虚函数才能实例化,否则仍为抽象类。可实例化的类称具体类。
抽象类示例:形状面积接口
#include <iostream>
using namespace std;
class Shape { // 抽象基类
public:
virtual int getArea() = 0; // 纯虚函数定义接口契约
void setWidth(int w) { width = w; }
void setHeight(int h) { height = h; }
protected:
int width, height;
};
class Rectangle: public Shape {
public: int getArea() { return width * height; }
};
class Triangle: public Shape {
public: int getArea() { return width * height / 2; }
};
int main() {
Rectangle Rect; Triangle Tri;
Rect.setWidth(5); Rect.setHeight(7);
cout << "Total Rectangle area: " << Rect.getArea() << endl; // 35
Tri.setWidth(5); Tri.setHeight(7);
cout << "Total Triangle area: " << Tri.getArea() << endl; // 17
return 0;
}
抽象类Shape以getArea()定义接口,Rectangle/Triangle按各自几何规则实现。
设计策略
面向对象系统常用抽象基类为外部应用提供统一标准化接口。外部能力建模为纯虚函数,具体实现延迟到派生类。新应用类型可通过新增派生类无缝接入,系统扩展性强。
C语言
- C++结构体与类:嵌入式开发者实战指南
- 掌握 C# 抽象类与抽象方法:实战指南
- 掌握 C++ 运算符:六大类型全解析与实战示例
- C++类与对象:面向对象编程实战指南
- C++ 友元函数与友元类:突破访问控制的利器
- C++ 类模板实战指南:编写灵活的类型无关代码
- C# 抽象类实战教程:从定义到派生的完整代码示例
- C++存储类别全解析:auto/register/static/extern/mutable作用域与生命周期
- Java 抽象类与抽象方法完全指南
- 精通 Java:理解对象、类与核心 OOP 概念
- Java 抽象类与抽象方法:规范契约、强制实现与模板模式
- Java 接口全解析:定义契约、默认方法、多实现与标记接口