成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Java父類強(qiáng)制轉(zhuǎn)換子類原則

Amos / 2844人閱讀

摘要:我們知道中子類轉(zhuǎn)換成父類是沒有任何問題的,那父類可以轉(zhuǎn)換成子類嗎來看下面這段程序結(jié)果是報類轉(zhuǎn)異常轉(zhuǎn)換正常。所以,想讓父類強(qiáng)制轉(zhuǎn)換成子類,不是沒有可能,除非父類是子類構(gòu)造出來的實例,不然是不能強(qiáng)轉(zhuǎn)的。

最近,微信群友在討論子類父類的轉(zhuǎn)換問題,其實不難,給大家用實例來說明一下就很明了了。

我們知道Java中子類轉(zhuǎn)換成父類是沒有任何問題的,那父類可以轉(zhuǎn)換成子類嗎?

來看下面這段程序:

public class TestObjectConvert {

    public static void main(String[] args) {
        test1();
        test2();
    }

    private static void test1() {
        Fruit fruit1 = new Fruit();
        Apple apple1 = new Apple();
        apple1 = (Apple) fruit1; // java.lang.ClassCastException
    }

    private static void test2() {
        Fruit fruit1 = new Apple();
        Apple apple1 = new Apple();
        apple1 = (Apple) fruit1;
    }

    static class Fruit {

    }

    static class Apple extends Fruit {

    }

}

結(jié)果是:

test1:報類轉(zhuǎn)異常;
test2:轉(zhuǎn)換正常。

所以,想讓父類強(qiáng)制轉(zhuǎn)換成子類,不是沒有可能,除非父類是子類構(gòu)造出來的實例,不然是不能強(qiáng)轉(zhuǎn)的。

為什么呢?

如上代碼,如果父類實例出來的對象是Orange,Orange當(dāng)然不能強(qiáng)制轉(zhuǎn)成Apple,所以說父類只有該子類對應(yīng)的實例才能強(qiáng)轉(zhuǎn)。

推薦閱讀

干貨:Spring Boot & Cloud 最強(qiáng)技術(shù)教程

工具:推薦一款在線創(chuàng)作流程圖、思維導(dǎo)圖軟件

分享Java干貨,高并發(fā)編程,熱門技術(shù)教程,微服務(wù)及分布式技術(shù),架構(gòu)設(shè)計,區(qū)塊鏈技術(shù),人工智能,大數(shù)據(jù),Java面試題,以及前沿?zé)衢T資訊等。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/71388.html

相關(guān)文章

  • 【從基礎(chǔ)學(xué) Java】繼承

    摘要:快速了解繼承在的繼承關(guān)系里子類可以從獲取父類的所有的公共和受保護(hù)成員字段方法和內(nèi)部類。阻止繼承有些情況下,我們可能不希望子類覆蓋父類的方法,這時候,用關(guān)鍵字修飾方法即可實現(xiàn)該目的。 和現(xiàn)實世界中:子女可以繼承父母的一些特征(如:基因)、財產(chǎn)等一樣。OOP 中也有提供類似的特性,一個類完全可以從其它類里獲得一些屬性和方法,而不需要我們自己重新定義。這種特性簡單但強(qiáng)大 (Simple an...

    Dongjie_Liu 評論0 收藏0
  • 嘻哈說:設(shè)計模式之里氏替換原則

    摘要:定義按照慣例,首先我們來看一下里氏替換原則的定義。同樣覆蓋了父類的非抽象方法,并將邏輯更改為跳舞,這要是違背了里氏替換原則的。而重寫顯然是不符合里氏替換原則的。里氏替換原則的核心思想就是繼承,所以優(yōu)點就是繼承的優(yōu)點。 showImg(https://user-gold-cdn.xitu.io/2018/9/19/165f1897234ef1d4?w=600&h=350&f=jpeg&s...

    dendoink 評論0 收藏0
  • 9. java 多態(tài)

    摘要:概念所謂多態(tài),就是指一個引用變量類型在不同的情況下的多種狀態(tài)。需進(jìn)行強(qiáng)制轉(zhuǎn)換有風(fēng)險,最好使用進(jìn)行判斷。繼承在多態(tài)中必須存在有繼承關(guān)系的子類和父類。在中有兩種形式可以實現(xiàn)多態(tài)繼承和接口。 概念 所謂多態(tài),就是指一個引用變量(類型)在不同的情況下的多種狀態(tài)。也可以理解為,多態(tài)是指通過指向父類的指針,來調(diào)用在不同子類中實現(xiàn)的方法。多態(tài)性是對象多種表現(xiàn)形式的體現(xiàn) 多態(tài)性嚴(yán)格來說有兩種描述形式:...

    wanglu1209 評論0 收藏0
  • Java筆記 - 重寫/重載,向上轉(zhuǎn)型/向下轉(zhuǎn)型

    摘要:所以靜態(tài)方法不能被覆蓋。雖然就算你重寫靜態(tài)方法,編譯器也不會報錯。也就是說,如果你試圖重寫靜態(tài)方法,不會阻止你這么做,但你卻得不到預(yù)期的結(jié)果重寫僅對非靜態(tài)方法有用。我們應(yīng)該直接使用類名來訪問靜態(tài)方法,而不要使用對象引用來訪問。 重寫/重載 重寫指的是根據(jù)運(yùn)行時對象的類型來決定調(diào)用哪個方法,而不是根據(jù)編譯時的類型。所以靜態(tài)方法不能被覆蓋。 (如果從重寫方法會有什么特點來看,我們是不能...

    qqlcbb 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<