代码源于B站up 黑马程序员匠心之作C++
##保存方便学习自用
#include <iostream>
using namespace std;
//多态案例 ;制作饮品
class AbstractertDrinking{
public:
//煮水
virtual void Boil()=0;
//冲泡
virtual void Brew()=0;
//倒入杯中
virtual void PourInCup()=0;
//加入辅助作料
virtual void PutSomething()=0;
//制作饮品
void makeDrink(){
Boil();
Brew();
PourInCup();
PutSomething();
}
};
//制作咖啡//
class Coffee: public AbstractertDrinking{
public:
//制作饮品
//煮水
virtual void Boil(){
cout<<"煮农夫山泉"<<endl;
}
//冲泡
virtual void Brew(){
cout<<"冲泡咖啡"<<endl;
}
//倒入杯中
virtual void PourInCup(){
cout<<"倒入杯子"<<endl;
}
//加入辅助作料
virtual void PutSomething(){
cout<<"加入糖和牛奶"<<endl;
}
};
//制作茶饮
class Tea: public AbstractertDrinking{
public:
//制作饮品
//煮水
virtual void Boil(){
cout<<"煮矿泉水"<<endl;
}
//冲泡
virtual void Brew(){
cout<<"冲泡茶叶"<<endl;
}
//倒入杯中
virtual void PourInCup(){
cout<<"倒入杯子"<<endl;
}
//加入辅助作料
virtual void PutSomething(){
cout<<"加入柠檬"<<endl;
}
};
void doWork (AbstractertDrinking * abs){//AbstractDrink* abs=new Coffee
//父类的指针指向一个形参对象
abs->makeDrink();
delete abs;
}
void test01(){
//制作咖啡//
doWork(new Coffee);
cout<<"----------------"<<endl;
//制作茶饮//
doWork(new Tea);
// 以上实例就是多态的效果
//一个接口(makeDrink();)有多个形态 , 当传入的 对象不同时,会产生不同的效果
}
int main(){
test01();
return 0;
}