C++ 多态 案例(//多态案例----制作饮品 //描述:煮水 冲泡 倒入杯中 加入辅料)
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++ 多态 案例(//多态案例----制作饮品 //描述:煮水 冲泡 倒入杯中 加入辅料)的更多相关文章
- Java多态面试题案例几解题思路
---恢复内容开始--- Java多态面试题案例几解题思路 这道题是来自别人,先开始看到题很懵,后来有自己的思路: class A { public String show(D obj){ retur ...
- [Mugeda HTML5技术教程之16]案例分析:制作跨屏互动游戏
本节我们将要做一个跨屏互动应用的案例分析,该应用时给一家商场做活动使用的,是一个跨屏爱消除游戏.PC端页面显示在连接在PC的大屏幕上,参与活动的玩家可以用自己的手机扫描PC端页面上的二维码,连接成功后 ...
- [Mugeda HTML5技术教程之15]案例分析:制作移动教育课件
本文档要分析的案例是一个一氧化碳还原氧化铜的教育小课件,从中可以体会一些Mugeda API的用法和使用Mugeda动画制作移动教育课件的方法.Mugeda为移动教育领域和移动数字出版领域提供理想的教 ...
- [Mugeda HTML5技术教程之14]案例分析:制作网页游戏
本文档要分析的案例是一个爱消除的网页小游戏,从中可以体会一些Mugeda API的用法和使用Mugeda动画制作网页游戏的方法. (一)游戏规则: 1.开始游戏时,手机出现在最上面一行的任意一格: 2 ...
- 廖雪峰Java2面向对象编程-3继承和多态-2多态
1.重载 子类覆写父类的方法称为重载Override. 父类和子类拥有一摸一样的方法(方法的名字.返回值.参数是相同的,但是方法的语句是不一样的) 方法签名如果不同就不是重载,而是创建了一个新的方法. ...
- 9 python 多态与多态类
1.多态定义 多态指的是一类事物的多种形态 比如动物有多种形态:人,狗,猪 import abc class Animal(metaclass=abc.ABCMeta): @abc.abstractm ...
- c++ 宏多态 动态多态和静态多态(转载)
转载出处:通道 多态(polymorphism)一词最初来源于希腊语polumorphos,含义是具有多种形式或形态的情形.在程序设计领域,一个广泛认可的定义是“一种将不同的特殊行为和单个泛化记号相关 ...
- 四. Java继承和多态4. 多态和动态绑定
在Java中,父类的变量可以引用父类的实例,也可以引用子类的实例. 请读者先看一段代码: public class Demo { public static void main(String[] ar ...
- Java修炼——面向对象的三大特征_多态_多态的三个必要条件
多态指的是同一个方法调用,由于对象不同可能会有不同的行为,现实生活中,同一个方法,具体实现会完全不同. 多态的要点: 1.多态是方法的多态,不是属性的多态(多态与属性无关) 2.多态的存在有三个必要条 ...
随机推荐
- excel打印出现多余空白页
问题: 解决方法一:设置打印区域 步骤:选择需要打印的内容--页面布局--打印区域--设置打印区域即可 解决方法二:删除多余的打印空白页 步骤:视图--分页预览--选中多余的空白页删除即可
- hbuilder 开发app 自动升级
使用huilder 开发app ,实现app升级功能 1. var wgtVer = null; //用于获取系统当前版本 var currentversion = null; //用于获取系统最新 ...
- 13.9示例:有理数Rational类
要点提示:java提供了表示整数和浮点数的数据类型,但是没有提供表示有理数的数据类型. public Rational extends Number implements Comparable {}
- python导入模块--案例
1 导入模块 1.1 问题 本案例要求先编写一个star模块,主要要求如下: 建立工作目录 ~/bin/ 创建模块文件 ~/bin/star.py 模块中创建pstar函数,实现打印50个星号的功能 ...
- JUnit5的Tag、Filter、Order、Lifecycle
Tag JUnit5可以使用@Tag注解给测试类和测试方法打tag,这些tag能用来在执行时进行过滤,它跟group有点类似. tag应该遵循以下规则: 不能为null或者为空. 不能包含空格. 不能 ...
- RabbitMq脑裂问题
现象 部署在阿里云上的2台RabbitMQ主从,访问management页面时出现如下所示的内容: 查看其中一个mq的日志,发现如下内容: 00:06:32.423 [warning] <0.5 ...
- 暑假自学java第十二天
1, 创建String 字符串 Java 中的字符串是一连串的字符,与其他计算机语言将字符串作为字符数组处理不同,Java将字符串作为String类型对象来处理.将字符串作为内置的对象处理,允许Jav ...
- php 写入文件 读取文件内容
1.写入文件 fopen("文件名.扩展名","操作方式") fwrite(读取的文件,"写入的文件"); fclose(打开的对象变量); ...
- ExtJs4学习(三)组件查找 ComponentQuery类
Extjs3.x: ID:这就是所熟知的Ext.getCmp("组件ID"),缺点是id重复导致出错. ref:在EXTJS3中,所有的组件都会有一个ref属性,也就是refere ...
- mybatis 配置的log4j文件无效,不能正常显示日志信息
正在学习mybatis,配置好后log4j.properties文件后,日志信息不能正常显示,没有效果. 查看了一下mybatis的相关文档,在日志一栏找到问题愿意 原因是我们的mybatis选了其他 ...