/*多态的向下转型使用不当,程序运行时期异常
*
* 在使用多态的向下转型:一定要看清楚此时内存是什么类型,否则就出现这个类转换异常
* */
//定义人类
class Person {
public void study() {
System.out.println("人都需要学习");
}
}
// 学生类
class Student extends Person {
public void study() {
System.out.println("JAVA");
}
public void PlayGame() {
System.out.println("玩游戏");
}
}
// 工人类
class Worker extends Person {
public void study() {
System.out.println("学技术");
}
public void code() {
System.out.println("写代码");
}
}
// 测试类
public class DuoTaiDemo6 {
public static void main(String[] args) {
//父类引用指向子类对象
Person p=new Student();//内存是学生
p.study();
Student s=(Student)p;//还原成学生类(内存还是学生)
s.PlayGame();
p=new Worker();//内存是工人
p.study();
Worker pg=(Worker)p;//还原成程序员类(内存还是工人)
pg.code();
// Student ss=(Student)p;//com.lin.duotai_01.Worker cannot be cast to com.lin.duotai_01.Student
//at com.lin.duotai_01.DuoTaiDemo6
}
}