回覆列表
-
1 # 肥貓技術生活
-
2 # IT人劉俊明
作為一名IT從業者,同時也是一名計算機專業的教育工作者,我來回答一下這個問題。
首先,面向物件程式設計本身的抽象程度還是比較高的,正因為有較高的抽象程度,所以理解面向物件程式設計要更復雜一些,面向物件程式設計涉及到很多概念,其中動態和靜態就是兩個比較大的內容。
要想理解動態和靜態這兩個概念,首先要從面向物件程式設計的過程出發,以Java語言為例,程式設計的過程可以總結為三個步驟,分別是類的定義、物件的創新和方法的呼叫。類的定義是程式設計的第一步,重點在於功能和屬性的定義,由於類本身就是一個抽象的概念定義,所以類在程式執行的過程中並不會產生變化,這也是為什麼把類稱為“靜態概念”的重要原因。
定義類的目的往往是基於類來完成物件的建立,相對於類來說,物件是執行功能的主體,而且同一個類可以構建出大量不同狀態的物件,而且這些物件之間也可能會存在一定的關係(繼承、多型等),所以物件往往是動態的。實際上,對於物件的理解是掌握面向物件程式設計的重點,物件的整個生命週期管理也能夠體現出程式設計師的程式設計能力,比如透過各種容器(Container)來管理物件等等。
站在設計的角度來說,類(包括介面)是設計的起點,而物件則是執行具體功能的實體,所以類可以比喻成“圖紙”,而物件則是由圖紙構建出來的實物,這就是類和物件之間的基本關係。從這個角度來看,物件雖然是動態的,但是物件的功能則是由類來賦予的,因此學習面向物件程式設計的一個重點就是如何設計類。
1.面相物件三大特性(繼承封裝多型),還有類和物件,常見的的設計模式都屬於面相物件範疇。
2.這裡重點介紹類和物件,"物件是動態的,類圖是靜態的”,這個是對面向物件深層次的哲學方向的理解
3.舉例說明:
a.把它類比喻成法律,它包括憲法(父類)>刑法(子類)或具體的某個法律(子類) 這個是個靜態的類圖,但是如果某個具體的案件時就是一個物件,法律的規定是相當於靜態類圖,而具體的案件相當於物件,每個案件都不會相同,支援了物件是動態的觀點。
b.把它類比成數學公式題和應用題,數學公式類有 加法(父類)>乘法(子類)>階乘(子類)等等海量的數學公式,無論有多少他都是靜態的,但是應用題不一樣,每個應用題都會考慮到具體引數,都不相同,它是動態的
類似情況再生活中舉不勝數