C/C++学习笔记

5.0 C++远征:接口类

2016-11-18  本文已影响7人  青_阳

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(){......}     // 实现“装弹”
};
上一篇 下一篇

猜你喜欢

热点阅读