Java(多态)

发布于 2024-01-20  425 次阅读


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();
     }
}