C++知识点分享02 多态

版权声明

---------------------------------------------------------------------------------------------------------------------

该文章原创于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()接口的实现。但是行为却各不相同。这就为面向对象设计提供了基础,各种不同对象,在做同样动作时表现出来可以不一样。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

女儿叫老白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值