java多态

来源:互联网 发布:泯然众人 知乎 编辑:程序博客网 时间:2024/06/13 05:54
1. 多态的概念—-面向对象编程的精髓
所谓多态:多种形态。生物学,是指一个生物或物种可以有多重不同的形式和阶段。
OOP中,多态是指一个对象有多重形式的能力。相同的行为,不同的实现
2.多态的分类
1.静态多态
"静"在编译时期系统就能知道调用哪个方法。
实现:重载和重写
2.动态多态(重点)
运行中系统才能动态确定方法所指的对象。通过对象的绑定关系来确定。
1. 重写
2.动态绑定
概念:运行时根据父类引用变量指向的实际类型对象执行相应的子类方法,从而实现多态性
1. 转型技术
怎么转
向上转型技术,一个父类的引用变量可指向不同的子类对象,或者说一个子类对象可以被当做一个父类类型。
instanceof关键字用于判断运行时对象的真正类型。
谁能转
只有有继承关系的,才可能做类型转换。
父类 变量 = 子类对象,向上转型没有风险
子类 变量 = (子类)父类对象 ,向下转型有风险。因为如果子类引用.子类中特有的方法,那么实际上的父类对象是没有这个方法的。
父类的范围比子类的范围大。
总结:要想编译通过且运行通过,只能靠本类引用指向本类对象,父类引用指向子类对象。子类引用不能指向父类的对象。
为什么能转
计算机的内存分配。
推演静态绑定
当我们得到一个父类的引用时,不知道实际上指向的是哪个对象。
运算符 instanceof
用于判断某个对象是否是某个类型的实例。
动态绑定机制
 如果用父类引用指向子类对象,再用父类引用调用一个在子类中被重写的方法,那么调用的是子类的方法实现。
 因为JVM会在继承树上搜索,如果这个方法被子类重写了,那么调用子类的。
3.多态的使用场景
1.多态参数
 所谓多态参数,就是当方法的某个形式参数是一个引用的时候,与该引用兼容的任何对象都可以传递给方法,从而允许方法接受不同数据类型的形式参数
2.异构集合
 多态另一个常见的应用是创建一个不是同一类型,但是有共同父类的数据集合。不同对象的集合称为异构集合
总结
 使用父类类型的引用指向子类的对象
 该引用只能调用父类中定义的方法,不能调用子类中独有的方法
 如果子类中重写了父类中的一个方法,那么在调用该方法的时候,将会调用子类中的这个方法
 在多态中,子类可以调用父类的所有方法
0 0
原创粉丝点击