通過(guò)實(shí)例分析java多態(tài)
這篇文章主要介紹了通過(guò)實(shí)例分析java多態(tài),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
首先來(lái)看這樣的一段代碼,其中對(duì)于類的定義如下:
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é)果的解釋,第一行第二行都是正常的調(diào)用,第三行中,將child賦給了parent 再進(jìn)行的輸出,這時(shí)候我們發(fā)現(xiàn)結(jié)果變成了200 并且輸出語(yǔ)句也變了。
第四句,執(zhí)行了parent.myValue++;但結(jié)果并沒(méi)有改變。第五行中,將parent類強(qiáng)行轉(zhuǎn)換為子類后又進(jìn)行了自增,結(jié)果變成了201.
3.對(duì)于這里的分析,我們發(fā)現(xiàn)子類賦值給父類是沒(méi)有問(wèn)題的,也就是說(shuō)子類完全可以直接轉(zhuǎn)換成父類。第四行的語(yǔ)句結(jié)果還是200,說(shuō)明他對(duì)于myValue的++還是調(diào)用了父類中的Value,但最后還是輸出了子類的Value.說(shuō)明子類賦給父類后,只是一部分替代,并不是完全覆蓋。第五句里,將父類轉(zhuǎn)換成子類然后進(jìn)行++,第四句第五句結(jié)合起來(lái),可以說(shuō)明子類賦值給父類,并不是所謂的覆蓋,只是把原本的東西給隱藏了罷了。而強(qiáng)制轉(zhuǎn)換后則不同,直接變成了子類。
最后,這其實(shí)告訴我們?cè)趯?shí)際應(yīng)用中,我們不應(yīng)該把父類和子類設(shè)置成相同的源代碼和成員變量,對(duì)于程序員在編程時(shí)的理解十分不利。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java中使用print、printf、println的示例及區(qū)別
Java?的輸出方式一般有這三種,print、println、printf,它們都是?java.long?包里的System類中的方法,本文重點(diǎn)給大家介紹Java中使用print、printf、println的示例,需要的朋友可以參考下2023-05-05Java中BigDecimal,DateFormatter?和迭代器的"陷阱"
這篇文章主要介紹了Java中BigDecimal,DateFormatter?和迭代器的"陷阱",文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,感興趣的小伙伴可以參考一下2022-06-06Spring MVC 中獲取session的幾種方法(小結(jié))
這篇文章主要介紹了Spring MVC 中獲取session的幾種方法(小結(jié)),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-09-09SpringBoot統(tǒng)一返回JSON格式實(shí)現(xiàn)方法詳解
這篇文章主要介紹了SpringBoot統(tǒng)一返回JSON格式實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2023-02-02