例如我现在有两个类,他们之间是继承的关系:
class Animal { void eat () { System.out.println("Animal eat..."); } } class Dog extends Animal { @Override void eat() { System.out.println("Dog eat"); } void bark() { System.out.println("Dog bark"); } }
通俗地讲,向上转型就是把子类的对象转化为父类的对象,如:
Animal animal = new Dog();
但是注意,向上转型后,父类只能访问与子类共有的方法,如以下代码就会出现编译错误:
animal.bark(); //出错
向下转型则需要强制类型转换:
Animal animal = new Dog();
Dog dog = (Dog) animal;
总的来说,向上转型总是安全的,向下转型则未必,可能会发生ClassCastException.