如何在Java中實(shí)現(xiàn)上轉(zhuǎn)型和下轉(zhuǎn)型對(duì)象?針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。
成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),張掖企業(yè)網(wǎng)站建設(shè),張掖品牌網(wǎng)站建設(shè),網(wǎng)站定制,張掖網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷(xiāo),網(wǎng)絡(luò)優(yōu)化,張掖網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M(mǎn)足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專(zhuān)業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶(hù)成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
Java主要應(yīng)用于:1. web開(kāi)發(fā);2. Android開(kāi)發(fā);3. 客戶(hù)端開(kāi)發(fā);4. 網(wǎng)頁(yè)開(kāi)發(fā);5. 企業(yè)級(jí)應(yīng)用開(kāi)發(fā);6. Java大數(shù)據(jù)開(kāi)發(fā);7.游戲開(kāi)發(fā)等。
語(yǔ)法格式:Father f=new Son();
注意事項(xiàng):
上轉(zhuǎn)型對(duì)象是由子類(lèi)創(chuàng)建的,但上轉(zhuǎn)型對(duì)象會(huì)失去子類(lèi)的一些屬性和方法。
上轉(zhuǎn)型對(duì)象調(diào)用方法時(shí),就是調(diào)用子類(lèi)繼承和重寫(xiě)過(guò)的方法。而不會(huì)是新增的方法,也不是父類(lèi)原有的方法。
上轉(zhuǎn)型對(duì)象可以操縱父類(lèi)原有的屬性和功能,無(wú)論這些方法是否被重寫(xiě)。
上轉(zhuǎn)型對(duì)象可以再?gòu)?qiáng)制轉(zhuǎn)換到一個(gè)子類(lèi)對(duì)象,強(qiáng)制轉(zhuǎn)換過(guò)的對(duì)象具有子類(lèi)所有屬性和功能。
代碼示例:
public class Shangz{ //父類(lèi) int a=1; int b=2; void cal(){ //父類(lèi)自己的方法 System.out.println(a*b); } public static void main(String[] args) { Shangz s=new ShangzDemo(); s.cal(); //上轉(zhuǎn)型對(duì)象調(diào)用子類(lèi)的方法 s.err(); //報(bào)錯(cuò),上轉(zhuǎn)型對(duì)象失去了子類(lèi)的屬性 } } class ShangzDemo extends Shangz{ //子類(lèi)繼承父類(lèi) void cal(){ //子類(lèi)重寫(xiě)父類(lèi)的方法 System.out.println(a+b); } void err(){ //子類(lèi)自己的方法 System.out.println(a/b); } }
下轉(zhuǎn)型對(duì)象:父類(lèi)引用的對(duì)象轉(zhuǎn)換為子類(lèi)的類(lèi)型(強(qiáng)制類(lèi)型轉(zhuǎn)換)。
語(yǔ)法格式:
Father f=new Son();
Son s=(Father)f;
錯(cuò)誤語(yǔ)法:(編譯不報(bào)錯(cuò),運(yùn)行報(bào)錯(cuò))
Father f=new Father();
Son s=Son(f);
注意事項(xiàng):
向下轉(zhuǎn)型必須先向上轉(zhuǎn)型,否則會(huì)發(fā)生異常。
下轉(zhuǎn)型對(duì)象可以引用子類(lèi)和父類(lèi)的屬性和方法。
代碼例子:
public class Shangz{ //父類(lèi) int a=1; int b=2; void cal(){ //父類(lèi)自己的方法 System.out.println(a*b); } public static void main(String[] args) { Shangz s=new ShangzDemo(); ShangzDemo d=(ShangzDemo)s; d.cal(); //調(diào)用了父類(lèi)的方法 d.div(); //對(duì)象調(diào)用子類(lèi)的方法 Shangz serr=new Shangz(); ShangzDemo derr=(ShangzDemo)serr; derr.cal(); //編譯不報(bào)錯(cuò),運(yùn)行出現(xiàn)轉(zhuǎn)換異常 } } class ShangzDemo extends Shangz{ //子類(lèi)繼承父類(lèi) void cal(){ //子類(lèi)重寫(xiě)父類(lèi)的方法 System.out.println(a+b); } void div(){ //子類(lèi)自己的方法 System.out.println(a/b); } }
關(guān)于如何在Java中實(shí)現(xiàn)上轉(zhuǎn)型和下轉(zhuǎn)型對(duì)象問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。