JAVA语言中的类建立继承关系之后,就产生了关系,这就导致了JAVA的第三大特性,多态。换言之,出现多态问题的前提应该是首先这两个类具有父子的继承关系。
多态性的产生也是为解决现实生活中的问题而出现的。现实生活中,一个事物是具有多种形态的,比如,我们在单位被称为同事,在家被另一半叫做亲爱的,而在父母家中又被叫做孩子,实际上都指的是我们本身。多态的代码体现就是父类的引用指向了自己的子类对象。多态的出现,大大提高了程序的扩展性,增强了后期的可维护性。但是多态也有弊端,那就是在使用多态的前期,你只能调用父类中的方法,而不能调用子类中的特有方法,因为前期不知道子类指的是谁。
多态思想
|--以前是建立对象,指挥对象做事情
如果对象过多,指挥就麻烦了,所以找到对象的共性类型
指挥这个共性类型就可以了
多态的转型
|-- 父类引用指向子类对象时,子类被自动提升为了父类类型,向上转型
|-- 要想使用子类的特有方法,需要进行强制类型转换向下转型
|-- 强制类型转换中的异常,类型转换异常
|-- 多态中判断类型关键字 instanceof
接口和多态案例
|-- 电脑主板中的PCI插槽
下面是PCI 接口的代码实现:
多态中的细节
|-- 多态中成员变量
编译时期,参考引用类型中是否有定义的变量
运行时期,参考引用型变量
|-- 多态中成员函数
编译时期,参考引用类型中是否有调用的方法
运行时期,参考对象所属的类中是否有调用的方法
|-- 多态中静态成员函数
编译时期,参考引用类型中是否有调用的方法
运行时期,参考引用型变量是否有调用的方法
模板方法设计模式
|-- 当功能一部分明确,一部分不明确的时候
将不明确的地方暴露出去,延迟到子类去完成
这就是我们解决不明确功能的思想
这个思想就是模板方法设计模式