Java多态的好处:使用多态可以解耦合,扩展性更强。且使用父类类型的变量作为形参,可以接受一切子类对象
student a = new student();
go(a);
teacher b = new teacher();
go(b);
public static void go(people c){}
people p1 = new teacher()
问题是多态不能调用子类独有功能,需要进行强制类型转换 :
student s1 = (student)p1
但运行时可能出现异常,父类对象不能转为子类对象(ClassCastException)。
可以使用instanceof关键字,判断当前对象,是的话返回true
p1 instanceof student
//属于的话返回true
//不属于的话返回false
需要调用子类独有功能时,在类型转换前需要用instanceof关键字判断类型,分别处理。
public static void go(people c){
if(c instanceof student){
student a1 = (student)c;
a1.test();
}
else{
teacher b1 = (teacher)c;
b1.teach();
}
}