概述:
多态是在继承 实现情况下的一种现象
多态分为对象多态和行为多态
对象多态是指父类变量接收子类对象,类型一样,指向对象不一样
行为多态是指方法一样,但方法表现不一样
public class Test2 {
public static void main(String[] args) {
Teacher t = new Teacher();
go(t);
Student s = new Student();
go(s);
}
//参数People p既可以接收Student对象,也能接收Teacher对象。
public static void go(People p){
System.out.println("开始------------------------");
p.run();
System.out.println("结束------------------------");
}
}
多态的好处
父类类型作为形参,可以接收一切子类对象,用于解耦合,扩展行更强,更便利
多态的弊端
多态形式下不能调用子类特有的方法
解决方案
类型转换
类型转换
关键字 :
instanceof : 类型比较运算符,用于测试对象是否是指定类型(类或子类或接口)的实例
注意 :
原本是什么类型,才能还原成什么类型
如果类型转换错了,就会出现类型转换异常ClassCastException
//多态形式下父类不能直接调用子类特有方法
//如果p接收的是子类对象
if(父类变量 instanceof 子类){
//则可以将p转换为子类类型
子类 变量名 = (子类)父类变量;
}
//如果类型转换错了,就会出现类型转换异常ClassCastException