1 //多态案例----制作饮品
2 //描述:煮水 冲泡 倒入杯中 加入辅料
3
4 #include <iostream>
5 #include <string>
6 using namespace std;
7
8 class AbstractDriking
9 {
10 public:
11
12 //煮水
13 virtual void Boil() = 0;
14
15 //冲泡
16
17 virtual void Brew() = 0;
18
19 //倒入杯中
20 virtual void PourInCup() = 0;
21
22 //加入辅料
23 virtual void PutSomething() = 0;
24
25 //制作
26 void makerDrink()
27 {
28 Boil();
29 Brew();
30 PourInCup();
31 PutSomething();
32 }
33 };
34
35 //制作咖啡
36 class Coffee :public AbstractDriking
37 {
38 public:
39 //煮水
40 virtual void Boil()
41 {
42 cout << "煮百岁山水" << endl;
43 }
44
45 //冲泡
46
47 virtual void Brew()
48 {
49 cout << "冲泡咖啡" << endl;
50 }
51
52 //倒入杯中
53 virtual void PourInCup()
54 {
55 cout << "倒入咖啡杯" << endl;
56 }
57
58 //加入辅料
59 virtual void PutSomething()
60 {
61 cout << "加入糖 ,牛奶" << endl;
62 }
63
64 };
65 //制作茶
66 class Tea :public AbstractDriking
67 {
68 public:
69 //煮水
70 virtual void Boil()
71 {
72 cout << "煮农夫山泉水" << endl;
73 }
74
75 //冲泡
76
77 virtual void Brew()
78 {
79 cout << "冲泡茶" << endl;
80 }
81
82 //倒入杯中
83 virtual void PourInCup()
84 {
85 cout << "倒入茶杯" << endl;
86 }
87
88 //加入辅料
89 virtual void PutSomething()
90 {
91 cout << "加入茶叶 ,柠檬" << endl;
92 }
93
94 };
95
96 //制作函数
97 void doWork(AbstractDriking* abs)// AbstractDriking*abs = new Coffee
98 {
99 abs->makerDrink();
100 delete abs;
101 }
102 void test01()
103 {
104 //制作咖啡
105 cout << "************制作咖啡************" << endl;
106 doWork(new Coffee);
107
108 //制作茶叶
109 cout << "************制作茶************" << endl;
110 doWork(new Tea);
111
112 }
113
114 int main()
115 {
116
117 test01();
118
119
120 system("pause");
121
122 return 0;
123
124 }

C++ 多态 案例(//多态案例----制作饮品 //描述:煮水 冲泡 倒入杯中 加入辅料)的更多相关文章

  1. Java多态面试题案例几解题思路

    ---恢复内容开始--- Java多态面试题案例几解题思路 这道题是来自别人,先开始看到题很懵,后来有自己的思路: class A { public String show(D obj){ retur ...

  2. [Mugeda HTML5技术教程之16]案例分析:制作跨屏互动游戏

    本节我们将要做一个跨屏互动应用的案例分析,该应用时给一家商场做活动使用的,是一个跨屏爱消除游戏.PC端页面显示在连接在PC的大屏幕上,参与活动的玩家可以用自己的手机扫描PC端页面上的二维码,连接成功后 ...

  3. [Mugeda HTML5技术教程之15]案例分析:制作移动教育课件

    本文档要分析的案例是一个一氧化碳还原氧化铜的教育小课件,从中可以体会一些Mugeda API的用法和使用Mugeda动画制作移动教育课件的方法.Mugeda为移动教育领域和移动数字出版领域提供理想的教 ...

  4. [Mugeda HTML5技术教程之14]案例分析:制作网页游戏

    本文档要分析的案例是一个爱消除的网页小游戏,从中可以体会一些Mugeda API的用法和使用Mugeda动画制作网页游戏的方法. (一)游戏规则: 1.开始游戏时,手机出现在最上面一行的任意一格: 2 ...

  5. 廖雪峰Java2面向对象编程-3继承和多态-2多态

    1.重载 子类覆写父类的方法称为重载Override. 父类和子类拥有一摸一样的方法(方法的名字.返回值.参数是相同的,但是方法的语句是不一样的) 方法签名如果不同就不是重载,而是创建了一个新的方法. ...

  6. 9 python 多态与多态类

    1.多态定义 多态指的是一类事物的多种形态 比如动物有多种形态:人,狗,猪 import abc class Animal(metaclass=abc.ABCMeta): @abc.abstractm ...

  7. c++ 宏多态 动态多态和静态多态(转载)

    转载出处:通道 多态(polymorphism)一词最初来源于希腊语polumorphos,含义是具有多种形式或形态的情形.在程序设计领域,一个广泛认可的定义是“一种将不同的特殊行为和单个泛化记号相关 ...

  8. 四. Java继承和多态4. 多态和动态绑定

    在Java中,父类的变量可以引用父类的实例,也可以引用子类的实例. 请读者先看一段代码: public class Demo { public static void main(String[] ar ...

  9. Java修炼——面向对象的三大特征_多态_多态的三个必要条件

    多态指的是同一个方法调用,由于对象不同可能会有不同的行为,现实生活中,同一个方法,具体实现会完全不同. 多态的要点: 1.多态是方法的多态,不是属性的多态(多态与属性无关) 2.多态的存在有三个必要条 ...

随机推荐

  1. excel匹配函数vlookup和lookup

    1.vlookup(查找的条件,查找的区域,满足查找条件后需要返回的值在选中的查找区域的第几列,精确匹配还是近似匹配(精确匹配为0或False表示,反之为1或True)) =VLOOKUP(J2,$G ...

  2. 开发小技巧之:unicode的排序和正则匹配

    目录 简介 ASCII字符的排序 本地字符的排序 为什么不使用unicode进行排序 emoji的正则匹配 总结 简介 我们知道计算机最先兴起是在国外,出于当时计算机性能的考虑和外国常用字符的考虑,最 ...

  3. Vue 前端权限控制的优化改进版

    1.前言   之前<Vue前端访问控制方案 >一文中提出,使用class="permissions"结合元素id来标识权限控制相关的dom元素,并通过公共方法check ...

  4. [JLOI2011]飞行路线题解

    题目描述 Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1,一共有m种航线,每种航线连接两个城市,并且航线有一定的 ...

  5. Element Ui使用技巧——Form表单的校验规则rules详细说明

    Element UI中对Form表单验证的使用介绍: Form 组件提供了表单验证的功能,只需要通过 rules 属性传入约定的验证规则,并将 Form-Item的 prop 属性设置为需校验的字段名 ...

  6. redis为什么那么快?

    数据库有很多,为什么Redis能有如此突出的表现呢?一方面,因为它是内存数据库,所有操作都在内存上完成.另外一方面就要归功于他的数据结构.高效的数据结构是Redis快速处理的基础.今天我们就来聊聊了R ...

  7. RabbitMQ 常用知识点总结

    基础 为什么使用 MQ? 1.削峰:在某个模块接收到超过最大承受的并发量时,可以通过 MQ 排队来使这些削减同一时刻处理的消息量.减小并发量. 2.解耦:在发送 MQ 处理业务时,可以使业务代码与当前 ...

  8. ESP32引脚参考(转)

    ES​P32芯片配有48个具有多种功能的引脚.并非所有的引脚都暴露在所有的ESP32开发板中,有些引脚不能使用. 关于如何使用ESP32 GPIO有很多问题.你应该用什么pin?在项目中应该避免使用哪 ...

  9. AcWing 1086. 恨7不成妻(【代码简洁】标准记忆化搜索+超详解!!)

    看到这题用循环写的dp代码瑟瑟发抖~ 数位dp一般记忆化搜索的写法思维难度较低,也比较常用,这题的简洁代码应该就可以显现出其优越性 (用时4ms,可能比用循环写的dp还要快) 那这里补充一下记忆化搜索 ...

  10. Git初始化本地已有项目

    1.初始化仓库 git init 2.remote git remote add origin 仓库地址 3.从远程分支拉取master分支并与本地master分支合并 git pull origin ...