**
P75(多态):
**
一、什么是多态变量
- 它有两个类型,一个是它的声明类型,一个是它的动态类型,它的声明类型永远是 Item,而它的动态类型是这次拿到是什么就是什么,可能是 CD 可能是 DVD
- 当通过点运算符说 item 所管理的对象去做 print()的动作的时候,它会让它所实际管理对象的那个类型去做 print()的动作,这样子的一件事情叫做多态
二、多态的技术基础是什么?
绑定
- 对于 Java 来说,所有的绑定都是动态绑定
- 最后一点也是动态绑定,所有的成员函数的调用都应该是看作一种动态绑定
- 对于编译器来说,
item.print()
这一行,在编译的时候,它并不知道这一行到底这个时候 item 管的是什么,所以只有运行时候才知道,运行时候才知道的东西是动态的,所以动态绑定
覆盖
- 所谓多态,指的就是,通过一个变量去调用一个函数,我们只是写了那么一句话,我们并不去判断变量实际的类型是什么,我们只需要说 item.print(),对应的那个函数就会被调用出来,这件事情就叫做多态