其他分享
首页 > 其他分享> > 多态

多态

作者:互联网

一、多态的概念

通俗来说,   就是多种形态;   具体点就是去完成某个行为,  当不同的对象去完成时会产生不同的状态。

举个例子:   比如当你在火车站买票,   普通成人买票时,   是全价买票;   学生买票时,   是半价买票;   军人买票时是优先买票。

二、多态的定义及实现

   1.多态的构成条件

多态是在不同继承关系的类对象,  去调用同一函数,   产生了不同的行为。比如Student继承了Person。 Person对象买票全价,   Student对象买票半价。

在继承中构成多态的两个条件:

  1. 必须通过基类的指针或者引用调用虚函数
  2. 被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写

   2.虚函数的重写

虚函数:   被virtual修饰的类成员函数称为虚函数

虚函数的重写(覆盖):   派生类中有一个跟基类完全相同的虚函数

返回值类型、函数名字、参数列表完全相同

   3.C++11 override 和 final

final:修饰虚函数,   表示该虚函数不能再被继承 

override:  检查派生类虚函数是否重写了基类某个虚函数,   如果没有重写编译报错 

   4.重载、覆盖(重写)、隐藏(重定义)的对比

 

 

 三、抽象类

纯虚函数:   在虚函数声明的结尾加上 =0 ,表明此函数为纯虚函数

                   纯虚函数没有函数体,只有函数声明

抽象类:   包含纯虚函数的类叫做抽象类(也叫接口类)

               抽象类不能实例化出对象,   派生类继承后也不能实例化出对象

               只有重写纯虚函数,派生类才能实例化出对象

               作用:  强制重写了虚函数,  也体现了接口继承关系

四、多态的原理

       在基类的函数前加virtual关键字,  在派生类中重写该函数,   运行时将会根据对象的实际类型来调用相应的函数,  如果对象类型是派生类,  就调用派生类的函数,  如果对象类型是基类,  就调用基类的函数

 

标签:函数,派生类,多态,基类,买票,重写
来源: https://www.cnblogs.com/enjoyC/p/15102340.html