5.0 C++远征:接口类

3-5接口类

[TOC]

一、接口类

1.接口类的定义

仅含有纯虚函数的类,称之为接口类。

​ 成员函数都是纯虚函数。

class Shape {
  public:
    virtual double calcArea() = 0;          // 计算面积
    virtual double calcPerimeter() = 0;     // 计算周长
};

2.接口类更多的是表达一种能力或协议

// Interface Class
class Flyable { // 能“起飞”能“降落”,就是能“飞”
  public:
    virtual void takeoff() = 0; // 起飞
    virtual void land() = 0;    // 降落
};

// Bird.cpp
class Bird : public Flyable {
  public:
    ......
    virtual void tabkeoff(){......}     // 实现“起飞”
    virtual void land(){......}         // 实现“降落”
  private:
    ......
};

// 飞行竞赛.cpp
void flyMatch(Flyable *a, Flyable *b) { // 传入的对象只要是Flyable的派生类就行了——“协议”
  ......
  a->takeoff();     // 调用约定的“降落”
  b->takeoff();
  a->land();        // 调用约定的“起飞”
  b->land();
}

// Interface class
class Shotable {
  public:
    virtual void aim() = 0;     // 瞄准
    virtual void reload() = 0;  // 装弹
};

// Plane.cpp
class Plane : public Flyable, public Shotable { // 多继承
  ......
  virtual void takeoff(){......}    // 实现“起飞”
  virtual void land(){......}       // 实现“降落”
  virtual void aim(){......}        // 实现“瞄准”
  virtual void reload(){......}     // 实现“装弹”
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、程序设计概念等 结构化程序设计特点: 程序设计=数据结构+算法程序内容=过程+过程调用 面向对象的程序设计方法...
    C2U阅读 710评论 0 1
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 9,534评论 1 51
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,209评论 30 471
  • 1.面向对象的程序设计思想是什么? 答:把数据结构和对数据结构进行操作的方法封装形成一个个的对象。 2.什么是类?...
    少帅yangjie阅读 5,044评论 0 14
  • 在 Android 应用程序开发过程中,我们经常会用到一些所谓的架构方法,如:mvp,mvvm,clean等。之所...
    _番茄沙司阅读 5,661评论 3 20