什么是多态?多态的实现方法?重载、覆盖、重写的定义区别?

什么是多态?
多态的定义:


多态:一个接口多个实现方式,即:多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。

条件:  

  1. 必须通过基类的指针或者引用调用虚函数    (虚函数:即被virtual修饰的类成员函数称为虚函数)
  2. 被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写 

多态的实现方式

重载、覆盖、重写


重载


重载分为函数重载和运算符重载

  •     函数重载:同一作用域内函数名相同、函数参数类型、顺序、个数不同等即可发生函数重载
  •     运算符重载:除了.  .*  ->*  ::  ?:   #之外都可以重载。

重写

  • 重写是发生在继承关系中(即在不同作用域内,一个在父类一个在子类),函数名、形参个数、形参类型、返回值类型都相同并且父类中带有virtual关键字,将原来的函数重写一遍,只不过函数的内容被更新。

覆盖/隐藏

  • 覆盖是发生在继承关系中(即在不同作用域内,一个在父类一个在子类),子类继承父类,子类中有与父类相同的属性和方法时,子类会将父类相同的属性和方法给覆盖或隐藏。

覆盖/隐藏与重载、重写区别

  1. 与重载范围不同:隐藏函数和被隐藏函数在不同类中。
  2. 参数的区别:隐藏函数和被隐藏函数参数列表可以相同,也可以不同,但函数名一定相同。

重载与重写区别

  1. 定义不同:重载是定义相同的方法名,参数不同;重写是子类重写父类的方法。
  2. 范围不同:重载是在一个类中,重写是子类与父类之间的。
  3. 多态不同:重载是编译时的多态性,重写是运行时的多态性。
  4. 返回不同:重载对返回类型没有要求,而重写要求返回类型,有兼容的返回类型。
  5. 参数不同:重载的参数个数、参数类型、参数顺序可以不同,而重写父子方法参数必须相同。
     
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值