top
Loading...
品味Java子類型多態的魅力
天極IT資訊短信服務 電腦小技巧
資費:包月5元
手機:
介紹:細處著手,巧處用功。高手和菜鳥之間的差別就是:高手什么都知道,菜鳥知道一些。電腦小技巧收集最新奇招高招,讓你輕松踏上高手之路。


摘要

Java程序員經常運用對象的多態性使其在適當的地方調用適當的方法,顯得很神奇。這種方法通過繼承機制來實現。然而,一個嚴謹的實驗可以使其變得很明白,并揭示了,把多態性理解為與類型相關的概念更為合適,比繼承機制的解釋更好。這種理解可以幫助程序員更好的運用多態。

------WM.保羅 羅格斯

“polymorphism(多態)”一詞來自希臘語,意為“多種形式”。多數Java程序員把多態看作對象的一種能力,使其能調用正確的方法版本。盡管如此,這種面向實現的觀點導致了多態的神奇功能,勝于僅僅把多態看成純粹的概念。

Java中的多態總是子類型的多態。幾乎是機械式產生了一些多態的行為,使我們不去考慮其中涉及的類型問題。本文研究了一種面向類型的對象觀點,分析了如何將對象能夠表現的行為和對象即將表現的行為分離開來。拋開Java中的多態都是來自繼承的概念,我們仍然可以感到,Java中的接口是一組沒有公共代碼的對象共享實現。

多態的分類

多態在面向對象語言中是個很普遍的概念.雖然我們經常把多態混為一談,但實際上有四種不同類型的多態。在開始正式的子類型多態的細節討論前,然我們先來看看普通面向對象中的多態。

Luca Cardelli和Peter Wegner("On Understanding Types, Data Abstraction, and Polymorphism"一文的作者, 文章參考資源鏈接)把多態分為兩大類----特定的和通用的----四小類:強制的,重載的,參數的和包含的。他們的結構如下:



在這樣一個體系中,多態表現出多種形式的能力。通用多態引用有相同結構類型的大量對象,他們有著共同的特征。特定的多態涉及的是小部分沒有相同特征的對象。四種多態可做以下描述:

強制的:一種隱式做類型轉換的方法。

重載的:將一個標志符用作多個意義。

參數的:為不同類型的參數提供相同的操作。

包含的:類包含關系的抽象操作。

我將在講述子類型多態前簡單介紹一下這幾種多態。

作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗