C++ 接口(抽象类)

C++ 接口(抽象类)

  • 接口描述了类的行为和功能,而不需要完成类的特定实现
  • 如果类中至少有一个函数被声明为纯虚函数,则这个类就是抽象类。
  • 设计抽象类(通常称为 ABC)的目的,是为了给其他类提供一个可以继承的适当的基类
  • 抽象类不能被用于实例化对象,它只能作为接口使用。如果试图实例化一个抽象类的对象,会导致编译错误
  • 如果一个 ABC 的子类需要被实例化,则必须实现每个虚函数,这也意味着 C++ 支持使用 ABC 声明接口

数据抽象

  • 向外界提供了大量用于操作对象数据的公共方法,也就是说,外界实际上并不清楚类的内部实现
  • 数据抽象是一个把实现细节与相关的数据分离开的概念。

抽象类实例

#include <iostream>

using namespace std;

// 基类,有纯虚函数,是抽象类
class Shape {
public:
    virtual double getArea() = 0; // 提供接口框架的纯虚函数

    void setWidth(int w) {
        width = w;
    }

    void setHeight(int h) {
        height = h;
    }

protected:
    int width;
    int height;
};

// 派生类
class Rectangle : public Shape {
public:
    double getArea() { // 子类实现方法
        return (width * height);
    }
};

class Triangle : public Shape {
public:
    double getArea() { // 子类实现方法
        return (width * height) / 2.0; // 返回值是double类型
    }
};

int main() {
    Rectangle Rect;
    Rect.setWidth(5);
    Rect.setHeight(7);
    cout << "Total Rectangle area: " << Rect.getArea() << endl; // 输出对象的面积
    Triangle Tri;
    Tri.setWidth(5);
    Tri.setHeight(7);
    cout << "Total Triangle area: " << Tri.getArea() << endl; // 输出对象的面积
    return 0;
}
Total Rectangle area: 35
Total Triangle area: 17.5
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 接口描述了类的行为和功能,而不需要完成类的特定实现。 C++ 接口是使用抽象类来实现的,抽象类与数据抽象互不混淆,...
    资深小夏阅读 348评论 0 0
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 35,203评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 137,150评论 19 139
  • 一、继承和多态在面向对象编程中,继承(也称为派生)让您能够创建新类,而这些类继承了父类(也称为基类)的特征和行为。...
    CarlDonitz阅读 958评论 0 2
  • 年轻人,你还有着梦想吗?曾经发过的誓,许下的承诺,还记得吗?你现在是为什么活着,身上是否带着某种信念的光芒,在这条...
    豆奶包wv阅读 344评论 1 0

友情链接更多精彩内容