Java多态总结

来源:互联网 发布:淘宝老客户怎么维护 编辑:程序博客网 时间:2024/05/01 19:47
多态(灵活):
概念:(相同的行为,不同的实现)
分类: 静态多态:在编译期系统就能决定调用哪个方法;
1、重载  2、或者单独使用重写

动态多态:运行中系统才能动态确定方法所指的对象;
1、重写技术 + 2、动态绑定技术:转型技术{怎么转?   谁能转?    为什么能转?} --→ 绑定 --→ instaceof

引用数据类型转换:
只有有继承关系的,才可能做类型转换;


向上转型技术:一个父类的引用变量可以指向不同的子类对象,把子类的对象赋给父类的变量 -- 一定成功,没有风险,自动转即可;
向下转型技术:把父类值赋给子类的变量 -- 有风险(风险高于基本数据类型),不一定成功(只有在父类引用指向了子类对象的时候成功),强制转换;
子类 变量 = 父类引用(指向的子类)或者子类:
1、该子类对象(成功)
2、父类对象或其他子类对象(编译通过,运行失败)

编译和运行都成功的两种情况:1、父类引用指向本类对象。2、本类引用指向本类对象。

为了控制风险,应该先判断instanceof再做强转
instanceof:用于判断运行时对象的真正类型 : 判定的引用变量 instanceof 数据类型

当用父类引用指向子类对象的时候,如果我们用父类引用调用被重写的方法,会得到子类重写后的效果;
因为:这个对象本身就是一个子类对象,所以它的实现一定是子类自己的实现

动态绑定技术:运行时根据父类引用变量所指对象的实际类型执行相应的子类方法,从而实现多态性




使用: 1、多态参数(当一个形参用的父类类型定义,与该父类引用兼容的任何子类对象都可以传递给方法,从而允许方法接受不同数据类型的参数)

2、异构集合
(多态另一个常见的应用是创建一个不是同一类型,但是有共同父类的数据集合,不同对象的集合称为异构集合)
基本数据类型没有父类,所以不能放进Object里面(jdk1.5之后自动转成包装类,然后再放入Object:例:new Integer(12))

总结: 1、使用父类类型的引用指向子类对象
2、该引用只能调用父类中定义的方法,不能调用子类中独有的方法
3、如果子类中重写了父类中的一个方法,那么在调用该方法的时候,将会调用子类的这个方法
4、在多态中,子类可以调用父类中的所有方法

1 0