物件(object)可以看做是資料(特性)以及由一系列可以訪問、操作這些資料的方法所組成的集合。主要有以下特點:
封裝:主要是乙個隱藏了各種細節的集合,只公開**單元的對外介面;
繼承:就像人類遺傳繼承,孩子會繼承父母的特點,但也可以擁有屬於自己的特點;
多型:意味著可以對不同類的物件使用同樣的操作。
前兩個特性比較容易理解,下面解釋下多型:
多型
多型意味著就算不知道變數引用的物件型別是什麼,還能對它進行操作,而它會根據物件型別的不同而表現出來不同的行為。其意思就是無論型別是什麼都可以通過一些通用方法來處理,只不過是返回來的結果可能不同。比如:get_price()函式,如果是個橘子類則返回橘子的**,如果是個蘋果類則返回蘋果的**。和具體的物件沒有關係,也比如1+2 返回 3;但『a』+『b』 返回『ab』。這裡加好就是多型的表現。
class
person:
defset_name
(self,name):
self.name = name
defget_name
(self):
return self.name
foo = person()
foo.set_name('asia')
foo.get_name()
people.get_name(foo) #後兩句意思相同
將屬於一類的物件放在一起。如果乙個函式操縱乙個全域性變數,那麼兩者做好都在類內作為特性和方法出現。
不要讓物件過於親密。方法應該只關心自己實力的特性。讓其他例項管理自己的狀態。
要小心繼承,尤其是多重繼承。繼承的機制有時候很有用,但也會在某些情況下讓事情變的過於複雜。多重繼承難以正確使用,難以除錯。
簡單就好。讓你的方法小巧。一般來說,多數方法都應能在30秒內讀完,盡量讓**行數控制在一頁或者以一屏之內。
當考慮需要什麼類以及類需要有什麼方法是,應該嘗試下面的方法:
(1)寫下問題的描述(程式需要做什麼?),把所有名詞、動詞和形容詞加下劃線。
(2對於所有名詞,用作可能的類。
(3)對於所有的動詞,用作可能的方法。
(4)對於所有的形容詞,用作可能的特性,
(5)把所有方法和特性分配到類。
現在已經有了物件導向模型的草圖了。還可以考慮類和物件之間的關係(比如繼承或協作)以及它們的作用,可以用以下步驟精煉模型:
(1)寫下(或者想象)一系列的使用例項—-也就是你的程式應用時的場景,試著包括所有的功能。
(2)一步步考慮每個使用例項,保證模型包括所有需要的東西。如果有些遺漏的話就新增進來。如果摸出不太則改正。繼續,知道滿意為止。
當認為有了可用的模型時,就可以code了。
四 物件導向 繼承
繼承 一 什麼是繼承 概念 父親有的東西,並且允許繼承,所有孩子就都會有 乙個父類可以擁有多個子類 乙個子類只能擁有乙個父類 二 父子之間的轉換 子類可以轉換成父類,這個父類只能轉換成之前的子類 子類可繼承父類,父類可代表子類 兄弟之間不可繼承。namespace 繼承 namespace 繼承 p...
python學習筆記 (十四)物件導向
用來描述具有相同的屬性和方法的物件的集合。它定義了該集合中每個物件所共有的屬性和方法 類變數在整個例項化的物件中是公用的。類變數定義在類中且在函式體之外。類變數通常不作為例項變數使用。類變數或者例項變數用於處理類及其例項物件的相關的資料。如果從父類繼承的方法不能滿足子類的需求,可以對其進行改寫,這個...
scale教程(四)物件導向
1.今天來講下scala中的物件導向 2.定義類和指定構造方法。定義乙個person類 帶有三個引數 class person fn string,ln string,s person println i am testing code def introduction string else ob...