版权声明
---------------------------------------------------------------------------------------------------------------------
该文章原创于Qter开源社区(www.qter.org)
作者: 女儿叫老白 (白振勇)
转载请注明出处!
---------------------------------------------------------------------------------------------------------------------
课程目录:《C++老鸟日记》目录
本套课程属于:《C++跨平台开发干货》系列课程。
--------------------------------------------------------------------------------------------------------------------
多态指多个派生类的同一个接口(接口名称相同,参数个数、参数类型均相同)的行为不同。
// planet.h
class CPlanet
{
public:
CPlanet(){}
virtual ~CPlanet(){}
public:
virtual void light() = 0;
};
// sun.h
#include <iostream>
using std::cout;
using std::endl;
class CSun : public CPlanet
{
public:
CSun()){}
~CSun(){}
public:
virtual void light(){cout << “俺整天发着耀眼的光芒”<<endl;}
};
// moon.h
#include <iostream>
using std::cout;
using std::endl;
class CMoon : public CPlanet
{
public:
CMoon ()){}
~ CMoon (){}
public:
virtual void light(){cout << “Sorry, 俺只负责反射太阳光。刺到您眼睛的话,去投诉它,别来找俺。”<<endl;}
};
// earth.h
#include <iostream>
using std::cout;
using std::endl;
class CEarth : public CPlanet
{
public:
CEarth ()){}
~ CEarth (){}
public:
virtual void light(){cout << “看啥看,俺不发光!”<<endl;}
};
从以上几个类可以看出,CPlanet基类,负责提供纯虚接口light(),当然,它也可以提供默认实现。比如:
virtual void light(){cout << “我发光了,大家注意!” << endl;}
CSun、CMoon、CEarth这三个派生类都提供了light()接口的实现。但是行为却各不相同。这就为面向对象设计提供了基础,各种不同对象,在做同样动作时表现出来可以不一样。