亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> C语言

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语言

  1. C++结构体与类:嵌入式开发者实战指南
  2. 掌握 C# 抽象类与抽象方法:实战指南
  3. 掌握 C++ 运算符:六大类型全解析与实战示例
  4. C++类与对象:面向对象编程实战指南
  5. C++ 友元函数与友元类:突破访问控制的利器
  6. C++ 类模板实战指南:编写灵活的类型无关代码
  7. C# 抽象类实战教程:从定义到派生的完整代码示例
  8. C++存储类别全解析:auto/register/static/extern/mutable作用域与生命周期
  9. Java 抽象类与抽象方法完全指南
  10. 精通 Java:理解对象、类与核心 OOP 概念
  11. Java 抽象类与抽象方法:规范契约、强制实现与模板模式
  12. Java 接口全解析:定义契约、默认方法、多实现与标记接口