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