中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

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
尤溪县| 绥滨县| 武陟县| 凤山县| 渝北区| 溧阳市| 台南县| 湛江市| 新巴尔虎左旗| 祁东县| 白沙| 景泰县| 安仁县| 广西| 乌拉特前旗| 左权县| 昌乐县| 拉孜县| 宜兰县| 河津市| 中阳县| 奈曼旗| 彩票| 游戏| 陆良县| 青川县| 旌德县| 望奎县| 芷江| 南丹县| 如皋市| 城固县| 菏泽市| 中西区| 中牟县| 迭部县| 永康市| 大竹县| 凤山市| 德兴市| 綦江县|