多态一般分为两种。
重写式多态和重载式多态。
重载式多态
重载式多态,也叫编译时多态。也就是这种多态在编译时已经确定好了。方法名相同而参数列表不同的一组方法就是重载。在调用这种重载的方法时,通过传人不同的参数最后得到不同的结果。
重写式多态
重写式多态,也叫运行时多态,这种多态通过动态绑定技术来实习,是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。只有程序运行起来,才知道调用的是哪个子类的方法。
多态的条件
继承:在多态中必须存在有继承关系的子类和父类。
重写:子类对父类中某些方法进行重新定义,在调用这方法时就会调用子类的方法。
向上转型:在多态中需要将子类的引用赋给父类对象,只有这样该引用才能够调用父类的方法和子类的方法。
继承也可为实现接口。
向上转型
子类引用的对象转换为父类对象称为向上转型。
通俗地说就是将子类对象转为父类对象,此处父类对象可以是接口。
向上转型过程中需要注意的问题
1.向上转型时,子类单独定义的方法会丢失。
2.子类引用不能指向父类对象
向上转型的好处
1.减少重复代码,使代码变得简介
2.提高系统扩展性、
向下转型
向下转型是把父类对象转为子类对象。
向下转型的注意事项
1.向下转型的前提是父类对象指向的是子类对象(需要先向上转型)
2.向下转型只能转型为本类对象。
总结:
1.多态,简而言之就是同一个行为具有多个不同表现形式或形态的能力。
2.多态的分类:运行时多态和编译时多态。
3.运行时多态的前提:继承(实现),重写,向上转型
4.向上转型与向下转型
5.继承链中对象方法的调用的优先级:this.show(O)、super.show(O)、this.show((super)O)、super.show((super)O)。