是指同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。
多态建立在类的继承之上:
类成员的 “横向拓展” (类成员越来越多)
类成员的 “纵向拓展” (类的行为改变,类的成员的 “版本升高”)
类成员的隐藏 (new 关键字)——不常用,因为理解复杂且容易出错
类成员的重写 (override 关键字)
重写和隐藏发生的条件:函数或属性成员一致,拥有可见性(如父类的是private,那肯定不能重写了),函数或属性签名需要一致(方法名,参数类型,返回类型)
什么是多态机制python
是指同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。
多态建立在类的继承之上:
类成员的 “横向拓展” (类成员越来越多)
类成员的 “纵向拓展” (类的行为改变,类的成员的 “版本升高”)
类成员的隐藏 (new 关键字)——不常用,因为理解复杂且容易出错
类成员的重写 (override 关键字)
重写和隐藏发生的条件:函数或属性成员一致,拥有可见性(如父类的是private,那肯定不能重写了),函数或属性签名需要一致(方法名,参数类型,返回类型)
多态机制(Polymorphism)按字面的意思就是“多种状态”。在面向对象语言中,接口的多种不同的实现方式即为多态。引用Charlie Calverts对多态的描述——多态性是允许你将父对象设置成为和一个或更多的他的子对象相等的技术。
赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作(摘自“Delphi4 编程技术内幕”)。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。多态性在Object Pascal和C++中都是通过虚函数(Virtual Function) 实现的。
一个引用变量到底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须由程序运行期间才能决定,这就是多态性
多态性可以分为编译时多态和运行时多态。
编译时多态:主要是指方法的重载,它是根据参数列表的不同来区分不同的函数运行时多态:在运行时谈不上多态,而运行时多态是动态的,它是通过动态绑定来实现,也就是我们说的多态性
我们在程序中定义的引用变量所指向的具体类型和通过该引用变量的方法调用在编程的时候并不确定,当处于运行期间才确定。就是这个引用变量究竟指向哪一个实例对象,在编译期间是不确定的,只有运行期才能确定,这样不用修改源码就可以把变量绑定到不同的类实例上,让程序拥有了多个运行状态,这就是多态。