亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

Java怎么正確地向上轉型和向下轉型

小億
85
2024-01-26 13:07:35
欄目: 編程語言

在Java中,向上轉型是指將一個子類對象賦值給一個父類引用變量,向下轉型是指將一個父類引用變量強制轉換為其子類對象。

向上轉型示例:

class Animal {
    public void sound() {
        System.out.println("Animal makes sound");
    }
}

class Dog extends Animal {
    public void sound() {
        System.out.println("Dog barks");
    }
}

public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog(); // 創建子類對象
        Animal animal = dog; // 向上轉型,將子類對象賦值給父類引用變量
        animal.sound(); // 調用父類引用變量的方法會執行子類的方法
    }
}

輸出結果為:

Dog barks

向下轉型示例:

class Animal {
    public void sound() {
        System.out.println("Animal makes sound");
    }
}

class Dog extends Animal {
    public void sound() {
        System.out.println("Dog barks");
    }
    
    public void fetch() {
        System.out.println("Dog fetches");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal animal = new Dog(); // 創建父類引用變量指向子類對象
        Dog dog = (Dog) animal; // 向下轉型,強制將父類引用變量轉換為子類對象
        
        dog.fetch(); // 調用子類對象的方法
    }
}

輸出結果為:

Dog fetches

需要注意的是,向下轉型存在風險,如果父類引用變量指向的實際對象不是轉型后的類型,會導致運行時異常。因此,在進行向下轉型時,最好先使用instanceof運算符來判斷引用變量是否可以轉型為目標類型,以避免運行時異常的發生。

if (animal instanceof Dog) {
    Dog dog = (Dog) animal;
    dog.fetch();
} else {
    System.out.println("Cannot downcast to Dog");
}

0
托克托县| 桂林市| 南川市| 新巴尔虎右旗| 丹巴县| 罗源县| 环江| 牟定县| 那坡县| 开封市| 梅河口市| 彩票| 潢川县| 太仓市| 宜良县| 建始县| 广昌县| 三亚市| 浙江省| 保定市| 黄梅县| 梁河县| 定边县| 南投县| 工布江达县| 抚州市| 琼海市| 平远县| 绩溪县| 广德县| 龙游县| 济宁市| 凤台县| 福海县| 巴马| 建始县| 新宁县| 三明市| 庆阳市| 渑池县| 东光县|