向上转型和向下转型
public class Person { public void work(){ System.out.println("父类工作"); } public void study(){ System.out.println("父类学习"); } } public class Student extends Person { @Override public void work() { System.out.println("子类工作"); }
public void play(){ System.out.println("子类游戏"); } } |
向上转型
Person person = new Student();
person可以调用work()、study()方法,不能调用父类没有的play()方法
且work()执行的为子类重写后的方法
向上转型是安全的
向下转型
Student student =(Student)person;
调用的全部是子类的方法,且可以调用play()方法
向下转型不安全,转型时转的类型必须是父类对象所指的真实子类对象