JAVA的多態(tài)

// 引用的多態(tài)
Animal an1 = new Animal();
Animal an2 = new Dog();// 父類(lèi)的引用指向子類(lèi)的對(duì)象

/**
 * 報(bào)錯(cuò):Type mismatch: cannot convert from Animal to Dog
 * 原因:子類(lèi)的引用不能指向父類(lèi)
 * Dog dog = new Animal(); 
 */ 
        
an1.eat();
an2.eat();

Dog dog = new Dog();
Animal an = dog;// 自動(dòng)類(lèi)型提升 向上類(lèi)型轉(zhuǎn)換
/**
 * 報(bào)錯(cuò):Type mismatch: cannot convert from Animal to Dog
 * 原因:這里是向下類(lèi)型轉(zhuǎn)換,不能自動(dòng)轉(zhuǎn)換,需要進(jìn)行強(qiáng)制轉(zhuǎn)換
 * Dog dog2 = an;
 */
        
/**
 * 注意:編譯時(shí),根據(jù)an的地址檢測(cè)到,an所在區(qū)域原本就是Dog類(lèi)型,所以可以轉(zhuǎn)換
 * Dog dog2 = (Dog)an;
 */
Dog dog2 = (Dog)an;// 向下類(lèi)型轉(zhuǎn)換 強(qiáng)制類(lèi)型轉(zhuǎn)換
        
/**
 * 報(bào)錯(cuò): Exception in thread "main" java.lang.ClassCastException: com.jiang.Dog 
 * cannot be cast to com.jiang.Cat at com.jiang.Initail.main(Initail.java:20) 
 * Cat cat = (Cat)an;// 工具雖然不報(bào)錯(cuò),但是編譯運(yùn)行的時(shí)候會(huì)拋錯(cuò)
 */
 
        
if(an instanceof Cat){
  Cat cat = (Cat)an;
}else{
  System.out.print("Cat和an無(wú)法進(jìn)行類(lèi)型轉(zhuǎn)換");
}
if(an instanceof Dog){
  Dog dog3 = (Dog)an;
}else{
  System.out.print("Dog和an無(wú)法進(jìn)行類(lèi)型轉(zhuǎn)換");
}

運(yùn)行結(jié)果:


運(yùn)行結(jié)果
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 姓名: 李小娜 [嵌牛導(dǎo)讀]: 運(yùn)行時(shí)多態(tài)性是面向?qū)ο蟪绦蛟O(shè)計(jì)代碼重用的一個(gè)最強(qiáng)大機(jī)制,動(dòng)態(tài)性的概念也可以被說(shuō)成“...
    n184閱讀 640評(píng)論 0 0
  • 多態(tài) 概述:某一個(gè)事物,在不同時(shí)刻表現(xiàn)出來(lái)的不同狀態(tài)。我們來(lái)舉例說(shuō)明: 貓是貓,狗是狗,貓和狗都是動(dòng)物。 水在不同...
    清風(fēng)沐沐閱讀 584評(píng)論 0 0
  • 多態(tài):對(duì)象的多種形態(tài) 1、引用多態(tài) 父類(lèi)的引用可以指向本類(lèi)的對(duì)象父類(lèi)的引用可以指向子類(lèi)的對(duì)象 2、方法多態(tài) 創(chuàng)建本...
    少冰三hun甜閱讀 1,104評(píng)論 0 0
  • 面向?qū)ο蟮娜N特性封裝,繼承和多態(tài)。封裝是為了保護(hù)數(shù)據(jù)和代碼重用,繼承在一定程度上也是為了代碼重用,另外一方面繼承...
    0x70e8閱讀 503評(píng)論 1 0
  • 那么什么是多態(tài)呢? 首先我們要知道多態(tài)性的三個(gè)必要滿(mǎn)足的條件: 1.有繼承(或?qū)崿F(xiàn)接口) 2.有方法的重寫(xiě) 3.有...
    多彩海洋閱讀 407評(píng)論 2 1

友情鏈接更多精彩內(nèi)容