多态的学习笔记

来源:互联网 发布:大数据软件开发 编辑:程序博客网 时间:2024/06/09 13:13
多态:不同的对象可以执行相同的动作,但是是使用它们自己实现的方法来完成;
可以理解为:父类和子类都实现了一个相同的方法
当将一个子类当做父类来使用的时候:注意:子类以父类的身份出现,此时它的类型是父类;子类在工作的时候使用自己的方法而不是父类的方法(即使它已经被当做父类了);子类此时已经'是'父类了,子类特有的属性和方法(即父类没有的属性和方法)不能使用:例:C++函数调用中对一个参数要求为父类的函数传递了一个子类参数,则该子类的特有部分被截断,体现了:子类已经'是‘父类了、子类特有属性和方法不能调用、子类所使用的方法是它自己实现的而不是父类的;

多态时,子类is-a父类;

在一个类内有同名方法:那叫方法重载,注意区分多态;

多态的应用场景:使用子类的override方法来替代父类的virtual方法;

多态性
指相同对象收到不同消息或不同对象收到相同消息时产生不同的实现动作。C++支持两种多态性:编译时多态性,运行时多态性。
a.编译时多态性: 通过函数重载和运算符重载来实现的。
b 运行时多态性:通过继承和虚函数来实现的。

函数重载可以理解为编译时多态,也是多态的一种

动态绑定就是发生在多态;
动态绑定:根据运行时类型(而不是编译时类型)来确定使用对应子类的对应虚方法,就是确认使用哪个虚方法的过程;
编译时类型:基类类型;
运行时类型:某个子类的类型;
原创粉丝点击