Upcasting的意思

Upcasting(向上轉型)是面向對象編程中的一個概念,特別是在Java這樣的語言中。當一個對象被轉換為它的父類或者更泛化的類型時,就會發生向上轉型。這個過程是安全的,因為父類對象可以包含子類對象的所有方法和屬性,但是父類對象無法訪問子類特有的方法和屬性。

舉個例子:

class Animal {
    public void eat() {
        System.out.println("Animal is eating.");
    }
}

class Dog extends Animal {
    public void bark() {
        System.out.println("Dog is barking.");
    }
}

public class UpcastingExample {
    public static void main(String[] args) {
        Dog dog = new Dog();
        Animal animal = dog; // 這裡發生了向上轉型
        animal.eat(); // 可以調用Animal類中的eat方法
        // 但是無法直接調用Dog類中的bark方法
        // animal.bark(); // 這會導致編譯錯誤
    }
}

在上面的例子中,Dog類繼承自Animal類,所以Dog對象可以向上轉型為Animal類型。在main方法中,我們將Dog對象賦值給Animal類型的引用,這樣就可以通過Animal引用調用eat方法,但是無法直接調用Dog特有的bark方法。這就是向上轉型的一個典型例子。