例如我現在有兩個類,他們之間是繼承的關系:
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.