多态
通常是指能够呈现出多种不同的形式或者形态,而在程序设计的术语中,它意味着一个特定类型的变量可以引用不同类型的对象,并且能够自动的调用引用的对象和方法。
方法重写是多态的基础
什么是方法重写?
当子类继承父类时,会根据需求重写父类中的相关方法,这就叫做方法重写
方法重写需要注意的是:方法名必须相同,参数项必须相同,返回值及类型必须相同。
方法重写的规则:
子类继承父类时重写父类的方法,访问修饰符不能小于父类
如果在类的前面加了final 表示不可以被重写
也叫做动态继承
Java中的多态一般有两种绑定机制
动态绑定
实例方法一般在调用时遵循的是动态绑定机制,与引用变量实际的对象绑定 调用重写后的方法
静态绑定
静态方法在调用时,遵循的是静态绑定机制,与引用变量所声明的类型绑定,实际上在编译阶段就做了绑定
(成员变量<包括静态变量和实例变量>)静态绑定机制 也与引用变量所声明的类型绑定,在编译阶段做了绑定
一般实现多态有以下两种方法:
向上转型
把引用变量类型转换为父类
向下转型
把引用变量类型转换为子类
注意:父类引用指向子类对象和子类对象并不完全以往,还可以调用子类重写方法,还可以调用父类本来的的方法和属性。
如何实现多态?
编写具有继承关系的父类和子类
子类重写父类方法
父类引用指向子类对象
(构造方法也能重写,叫做方法重载)