写在前面的话
多态是面向对象的三大特征之一。多态的意思可以理解为对象的多种表现形式,在面向对象中占有很重要的地位。
一,多态的体现
对象的多态性:
我们知道类中有子类和父类之称,子类创建的对象,也是父类型的一种形态。这就是对象的多态性。
扩展:方法的重载和重写也是多态的一种,不过是方法的多态(相同方法名称的多种形态)。
重载:一个类中方法多态性的体现。
重写:子父类中方法多态性的体现。
二,多态在编程中的体现
1,基础概念
首先得理解多态在编程中的体现就是对对象的转型。
向上转型:将子类对象变为父类对象。
父类 父类对象 = 子类实例。
注意:子类(范围小)可以传递给父类(范围大),但是父类传给子类则不行,否则会溢出,除非传的时候进行范围限定。
向下转型:将父类对象传给子类对象
子类 子类对象 = (子类)父类实例;
由于对象存在多态性,所以可以进行以上操作。
对象类型的转换可以理解为用已创建的对象实例对另一个类对象初始化。
由于父类可包含多种子类,所以父类转型成子类需要范围限定。
错误的想法:如果父类A有B、C两个子类,把B创建的对象初始化A后,不能用A再初始化C。
2,编程中的使用
一般用在接口中。
在写代码中,方法(函数)中传递的参数就可以是接口类型,然后该接口是一个父类,我们可以直接传递一个子类对象名称进来,不同子类中包含的方法不同。
三,instanceof
instanceof是多态中的关键字。用来判断传过来的对象是哪一个子类的对象。
格式:实例对象 instanceof 类
此操作返回boolean类型数据,实例对象为该类则返回true,否则为false。