91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

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
太仆寺旗| 盐源县| 连山| 万全县| 海城市| 分宜县| 武城县| 永城市| 定襄县| 东阿县| 贵德县| 扬州市| 贞丰县| 务川| 临湘市| 金沙县| 邢台县| 卢湾区| 松滋市| 双峰县| 广元市| 会理县| 志丹县| 新兴县| 丹巴县| 洪湖市| 全椒县| 霍州市| 南开区| 玛沁县| 麻江县| 滕州市| 昌平区| 老河口市| 营口市| 平凉市| 广德县| 延庆县| 监利县| 中宁县| 乐清市|