通過(guò)實(shí)例分析java多態(tài)
這篇文章主要介紹了通過(guò)實(shí)例分析java多態(tài),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

首先來(lái)看這樣的一段代碼,其中對(duì)于類(lèi)的定義如下:
class Parent{
public int myValue=100;
public void printValue() {
System.out.println("Parent.printValue(),myValue="+myValue);
}
}
class Child extends Parent{
public int myValue=200;
public void printValue() {
System.out.println("Child.printValue(),myValue="+myValue);
}
}
我們來(lái)一個(gè)一個(gè)的回答問(wèn)題:
1.運(yùn)行結(jié)果如圖

2.對(duì)于這個(gè)運(yùn)行結(jié)果的解釋?zhuān)谝恍械诙卸际钦5恼{(diào)用,第三行中,將child賦給了parent 再進(jìn)行的輸出,這時(shí)候我們發(fā)現(xiàn)結(jié)果變成了200 并且輸出語(yǔ)句也變了。
第四句,執(zhí)行了parent.myValue++;但結(jié)果并沒(méi)有改變。第五行中,將parent類(lèi)強(qiáng)行轉(zhuǎn)換為子類(lèi)后又進(jìn)行了自增,結(jié)果變成了201.
3.對(duì)于這里的分析,我們發(fā)現(xiàn)子類(lèi)賦值給父類(lèi)是沒(méi)有問(wèn)題的,也就是說(shuō)子類(lèi)完全可以直接轉(zhuǎn)換成父類(lèi)。第四行的語(yǔ)句結(jié)果還是200,說(shuō)明他對(duì)于myValue的++還是調(diào)用了父類(lèi)中的Value,但最后還是輸出了子類(lèi)的Value.說(shuō)明子類(lèi)賦給父類(lèi)后,只是一部分替代,并不是完全覆蓋。第五句里,將父類(lèi)轉(zhuǎn)換成子類(lèi)然后進(jìn)行++,第四句第五句結(jié)合起來(lái),可以說(shuō)明子類(lèi)賦值給父類(lèi),并不是所謂的覆蓋,只是把原本的東西給隱藏了罷了。而強(qiáng)制轉(zhuǎn)換后則不同,直接變成了子類(lèi)。
最后,這其實(shí)告訴我們?cè)趯?shí)際應(yīng)用中,我們不應(yīng)該把父類(lèi)和子類(lèi)設(shè)置成相同的源代碼和成員變量,對(duì)于程序員在編程時(shí)的理解十分不利。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot Web詳解靜態(tài)資源規(guī)則與定制化處理
這篇文章主要介紹了SpringBoot web場(chǎng)景的靜態(tài)資源規(guī)則與定制化,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-06-06
Springboot整合easyexcel實(shí)現(xiàn)一個(gè)接口任意表的Excel導(dǎo)入導(dǎo)出
本文主要介紹了Springboot整合easyexcel實(shí)現(xiàn)一個(gè)接口任意表的Excel導(dǎo)入導(dǎo)出,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-02-02
20秒教你學(xué)會(huì)java?List函數(shù)排序操作示例
這篇文章主要為大家介紹了20秒教你學(xué)會(huì)List函數(shù)排序操作示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09
idea數(shù)據(jù)庫(kù)驅(qū)動(dòng)下載失敗的問(wèn)題及解決
這篇文章主要介紹了idea數(shù)據(jù)庫(kù)驅(qū)動(dòng)下載失敗的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
Spring Boot如何移除內(nèi)嵌Tomcat,使用非web方式啟動(dòng)
這篇文章主要介紹了Spring Boot如何移除內(nèi)嵌Tomcat,使用非web方式啟動(dòng),幫助大家更好的理解和學(xué)習(xí)使用spring boot框架,感興趣的朋友可以了解下2021-02-02
Jenkins自動(dòng)部署Net Core過(guò)程圖解
這篇文章主要介紹了Jenkins自動(dòng)部署Net Core過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-12-12
Java連接 JDBC基礎(chǔ)知識(shí)(操作數(shù)據(jù)庫(kù):增刪改查)
這篇文章主要介紹了Java連接 JDBC基礎(chǔ)知識(shí),包括操作數(shù)據(jù)庫(kù)之增刪改查操作,需要的朋友可以參考下2021-04-04
解決idea導(dǎo)入ssm項(xiàng)目啟動(dòng)tomcat報(bào)錯(cuò)404的問(wèn)題
今天小編就為大家分享一篇解決idea導(dǎo)入ssm項(xiàng)目啟動(dòng)tomcat報(bào)錯(cuò)404的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-08-08

