5.0 C++远征:接口类

3-5接口类

一、接口类

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(){......}		// 实现“装弹”
};
posted @ 2016-11-18 14:10  青_阳  阅读(119)  评论(0编辑  收藏  举报