向上轉型和向下轉型


例如我現在有兩個類,他們之間是繼承的關系:

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.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM