多态应用实例--制作饮品

 1 #include<iostream>
 2 using namespace std;
 3 
 4 class AbstractDrinking
 5 {
 6 public: // 注意这里不写的话默认是private的
 7     // 纯虚函数
 8     // 这个类叫抽象类,无法实例化对象,子类必须重写父类中的函数
 9     virtual void boil() = 0;
10     virtual void Brew() = 0;
11     virtual void PourIncup() = 0;
12     virtual void Add() = 0;
13     void makeDrink() {
14         boil();
15         Brew();
16         PourIncup();
17         Add();
18     }
19 };
20 
21 class Coffee : public AbstractDrinking
22 {
23 public:
24     void boil() {
25         cout << "煮水" << endl;
26     }
27     virtual void Brew() {
28         cout << "加咖啡" << endl;
29     }
30     virtual void PourIncup() {
31         cout << "倒水" << endl;
32     }
33     virtual void Add() {
34         cout << "加牛奶" << endl;
35     }
36     
37 };
38 
39 class Tea : public AbstractDrinking
40 {
41 public:
42     void boil() {
43         cout << "煮水" << endl;
44     }
45     virtual void Brew() {
46         cout << "加茶叶" << endl;
47     }
48     virtual void PourIncup() {
49         cout << "倒水进杯" << endl;
50     }
51     virtual void Add() {
52         cout << "加点枸杞" << endl;
53     }
54 
55 };
56 void doWork(AbstractDrinking * abs) {
57     abs->makeDrink();
58     delete abs; // 释放堆区的数据
59 }
60 void test01() {
61     doWork(new Coffee);
62 
63     cout << "chaye " << endl;
64 
65     doWork(new Tea);
66 }
67 
68 
69 
70 int main() {
71 
72     test01();
73     return 0;
74 }

 

posted on 2021-01-25 21:18  Love&Share  阅读(140)  评论(0)    收藏  举报

导航