多态
一、什么是多态?
同一行为,通过不同的事物,可以体现出来的不同的形态,称为多态
二、多态的前提是什么?
1. 继承或者实现【二选一】
2. 方法的重写【意义体现:不重写,无意义】
3. 父类引用指向子类对象【格式体现】
三、多态的定义与使用
1、格式:
父类(接口)名 变量名 = new 子类名();
2、执行过程
Ⅰ、变量:看父类中是否定义类该变量,定义了则使用该变量继续编译,否则报错。运行也使用父类的该变量。与子类无关(变量不存在重写);
Ⅱ、方法:看父类中是否定义类该方法,定义了则使用该变量继续编译,否则报错。运行时候看子类是否重写该方法,若重写则使用子类方法,否则使用父类
Ⅲ、静态方法:看父类中是否定义类该变量,定义了则使用该变量继续编译,否则报错。运行也使用父类的该变量。与子类无关(静态方法与类相关,算不上重写);
3、多态的好处:
A:多态的好处
a:提高了代码的维护性(继承保证)
b:提高了代码的扩展性(由多态保证)
可以当作形式参数,可以接收任意子类对象
B:多态的弊端
不能使用子类的特有属性和行为。
四、转型
在我们使用多态时,在定义的时候就要将类向上转型,在这种情况下,我们只能使用父类中所拥用的方法,而子类中特有的方法和变量我们使用不到,
Ⅰ、向上转型:
子类类型向父类类型,称为向上转型,整个过程是安全的
Ⅱ、向下转型:
父类类型向子类转型,称为向下转型,这个过程存在转向错误的情况,在转型前要进行判断
转型格式: 子类名 新的变量名 = (子类名)(源变量名);
判断关键字: instanceof
格式: 变量名 instanceof 数据类型 若类型相同,则等于true,否则等于false。