1.多态

1.1 定义

简单来说,多态(polymorphism)是具有表现多种形态的能力的特征.

更专业的说法:同一个实现接口,使用不同的实例而执行不同的操作.

1.2 为什么要使用多态

多态不仅可以减少代码量,还可以提高代码的可扩展性和可维护性.

2.子父类型的转换方式

2.1 子类到父类的转换(向上转型),又称为自动类型转换

子类转换成父类时的规则:

将一个父类的引用指向一个子类对象,称为向上转型(upcasting),自动类型转换

此时通过父类引用变量调用的方法是子类覆盖或继承父类的方法,不是父类的方法

此时通过父类引用变量无法调用子类特有的方法

2.2 父类到子类的转换(向下转型),又称为强制类型转换

定义:

将一个指向子类对象的父类引用赋给一个子类的引用,称为向下转型.此时必须进行强制类型转换

强制类型转换语法:

父类 对象a=(父类的子类)对象b;

3.instanceof运算符

语法:

对象 instanceof 类或接口

作用:

该运算符用来判断一个对象是否属于一个类或者实现了一个接口,结果为truefalse.

使用方法:

类型转换之前通过instanceof运算符检查对象的真实类型,再进行相应的强制类型转换,这样就可以避免类型转换异常,从而提高代码的健壮性.

4.使用父类作为方法形参实现多态

使用父类作为方法的形参,java实现和使用多态的主要方式之一.

子类或父类作为实参.

5.使用父类作为方法返回值实现多态

使用父类作为方法的返回值,java中实现和使用多态的另一种方式.

此方法需要在方法里用instanceof判断属于哪一种子类对象,并进行强制转换,再返回

6.实现多态的三个条件

继承的存在(继承是多态的基础,没有基础就没有多态)

子类重写父类的方法(多态下调用子类重写后的方法)

父类引用变量指向子类对象(子类到父类的类型转换)

7.实现多态的思路:

编写继承关系的父类和子类

子类重写父类的方法

使用父类的引用指向子类的对对象