开门/开窗户/开电视。在这里的开就是多态!
多态性可以简单地概括为“一个接口,多种方法”,在程序运行的过程中才决定调用的函数。多态性是面向对象编程领域的核心概念。
多态性是允许你将父对象设置成为和它的一个或更多的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单来说就是允许将子类类型的指针赋值给父类类型的指针。
要知道的是:重载只是一种语言特性,与多态无关,与面向对象无关。
重载的实现是编译器根据不同的参数表,对同名函数的名称做修饰,然后这些同名函数就成了不同的函数(对编译器来说是不同的),对于这两个函数的调用,在编译期间就已经确定了,是静态的。也就是说,它们的地址在编译期就绑定了,因此,重载与多态无关。
函数地址在运行期绑定的(晚绑定),这样的是多态。“如果不是晚绑定,它就不是多态。”
多态的作用:
封装可以隐藏实现细节,使得代码模块化;
继承可以扩展已存在的代码模块;
封装和继承目的都是为了代码重用。
多态则是为了实现另一个目的:接口重用。
注:以上内容来源于《程序员面试宝典》第5版 欧立奇 第10章 面向对象的部分