对象向上转型:
abstract class Person { //抽象父类
abstract void show();
}
class Student extends Person {
@Override
void show() {
}
}
class Teacher extends Person {
@Override
void show() {
}
}
class Demo {
void display() {
Person swk = new Student();//自动向上转型
swk.show();
Person ts = new Teacher();//自动向上转型
ts.show();
}
}
对象向下转型:
Person swk = new Student();//自动向上转型
Person ts = (Teacher)swk;//强制转换不成功
Student swk2 = (Student)swk;//强制转换成功
转换前使用instanceof判断对象类型
Person swk = new Student();
Teacher t = null;
Student s = null;
if (swk instanceof Student)
s = (Student)swk;
else if(swk instanceof Teacher)
t = (Teacher)swk;