第二百一十五章 三大特征(1 / 2)

“那怎麼理解麵向對象編程的三大特征?”李慶豐又問道。

“麵向對象編程主要有三大特征:封裝性、繼承性和多態性。”章岩答道,“封裝性比較好理解,就是把過程和數據包圍起來,對數據的訪問隻能通過已定義的界麵進行。也可以說是把能夠實現某一特定功能的一組組代碼打包,形成一個個可以完成某種特定操作的固定模塊,這個做法就是封裝。

就像現在市場上的快食麵、茶包、便捷菜等產品一樣。快食麵裏麵有麵條、調味包、湯包、油包,茶包裏麵有泡袋、茶葉、繩子,便捷菜裏麵是烹製好的各色菜肴,這些產品的生產過程就類似麵向對象編程的封裝過程。

而這些產品最大的特點就是,你需要的話拿來就能用。而無需每次都要自己從到市場購買原材料回來進行清洗、斬切、調味、烹飪。

我們可以把一包這樣的產品看做是一個對象。我們要調用這個對象,需要選擇特定的方法。比食用如快食麵,我們是用開水泡湯吃還是浸泡之後做成撈麵或者炒麵來吃,那就隨各人喜歡了。

在享用的時候我們還可以自己加入辣、香等調味料和青菜、瓜果、鮮肉等輔料,這些可以看成是變量。

我們可以這樣來概括,麵向對象的程序設計最突出的特點是,它建立在對象和類的基礎上,把要解決的問題所對應的現實世界中的事物抽象成對象或類,並建立對象之間的關係。

每個對象或類不僅包含描述其特征的屬性或數據結構,而且還包含對這些數據結構的操作。

這些操作可能是以某種方式處理數據,或者是執行某個計算,或者是監督一個對象控製事件的發生。”

“這比較容易理解。”黃華山點點頭。

“繼承性也不複雜。”章岩繼續說,“通俗地說,就是一種產品不管由什麼材料加工而成,它除了具有自己的特點外,還會擁有從生產它所使用的各種原材料中繼承下來的特點。

比如說快食麵,除了擁有自己的特點外,必然會擁有製作快食麵所用的麵條的特點,也會擁有生產麵條所用的麵粉的特點,可以說是繼承了上輩乃至祖輩材料的主要特點,這就是繼承性。

在麵向對象編程中,衍生類和基類存在繼承關係,子類與祖先類也存在繼承關係。”

“這樣的比喻通俗易懂。”賀俊明有一種豁然開朗的感覺。

“至於多態性,就是不同類的對象對同一消息作出響應,或者說同一操作(也可以說是方法)作用於不同的對象時,可以有不同的解釋,產生不同的執行結果。”章岩繼續說,“比如,同樣是加法運算,把兩個時間加在一起和把兩個整數加在一起,計算方法和結果肯定完全不同。

又比如,同樣進行複製和粘貼操作,在字處理程序和繪圖程序中會有不同的效果。

多態性使用虛方法和抽象方法來編程,更符合麵向對象編程的思想,並且可以大幅提升代碼的可讀性和減少冗餘的代碼,能夠用更少的代碼實現相同的功能。