polymorphism

做爲Java的第三大特性--多態,你們確定很熟悉了,可是對於這個抽象的概念相信總有一些模糊,think in Java 在本章作了不少的解釋,具體講解了一下三個問題。
1.多態解決了什麼問題?
2.什麼是多態?
3.多態的擴展

多態解決了什麼問題?

多態解決了type的解耦問題。多態使咱們不用去關注具體的類型是什麼,多態的設計就是爲了讓咱們忘記類型這一回事。由於咱們不用關注具體的類型,因此不少代碼咱們均可以複用,咱們可使用一段代碼解決相似的問題。這在咱們開發過程當中有很大的做用,這個解耦使咱們每一層的使用牽連減少。總的來講多態解決的問題就是type的解耦問題。在思想上來講,就是讓咱們忘記類型。c++

什麼是多態?

當我說出這個問題的時候你們可能會下意識的覺得我要進行一些很抽象性、很概念性的講解,實際我想說明的並非這些概念性的東西,這些直接百度便可。那麼回到正題,什麼是多態?多態其實也有一些其餘的叫法,我更喜歡其中一種,運行時綁定。
在講解這個詞的時候,首先咱們來了解一下綁定。綁定分爲運行前綁定和運行時綁定。運行前綁定就是在程序沒有綁定的時候程序就已經知道要使用的這個方法的具體類型是哪個了。相反,運行時綁定就是程序在運行前不知道具體使用的方法的類型,只有運行時知道具體使用的方法類型。這樣也就實現了不用知道具體的Type的效果。
Java的總體機制就是使用運行時綁定的。除了屬性和私有和靜態方法。安全

多態的擴展

咱們知道多態只能控制父類的方法,對於子類擴展開來的方法是不能進行操做的,可是咱們確定會遇到這種狀況。那麼在這個時候咱們就不能再使用向上轉換了,使用向下轉換。可是這裏面有一個問題,就是咱們不知道這個類型是否是這樣你轉化的類型,會出現轉換出錯的問題,這個在c++裏面是不安全的,可是Java裏面有一個機制,就是在向下轉換的時候必定要強制轉換進行檢查,這樣就能夠達到安全控制,若是不是會報一個ClassCastException的錯誤。設計

相關文章
相關標籤/搜索