python物件導向的三大特徵

2021-09-27 05:53:37 字數 2343 閱讀 3930

封裝就是對類和物件的成員訪問進行限制,設定可以訪問的方式和不可以訪問的方式。

分類:私有化的封裝:當前類/物件種可以使用,類/物件外和子類/物件都不可以用

受保護的封裝:當前類/物件和子類/子類物件可以使用門,類/物件外不可以使用

公共的封裝:任何位置都可以訪問!

例:

class

father:

#屬性*** = '男'

age = 48

#私有化封裝 #標誌就是在屬性或者方法前加兩個下劃線

__wife = '

膚白貌美大長腿~'#

受保護的封裝 #加乙個下劃線

_money = 100

#方法def

_say(self):

print('受保護的封裝')

def__eat(self):

print('私有化封裝')

class son(father):

#此處可以使用受保護的成員

def buy(self):

print('爸爸一共有

',self._money,'錢')

#例項化兒子物件

s = son()

s.buy()

2.繼承:

繼承就是可以獲取另外乙個類中的成員屬性和成員方法。(並非所有成員)

父類:用於被繼承的類,稱之為父類,也叫做基類,或者超類

子類:繼承其他類的類,稱之為子類,也叫做派生類

繼承的好處

繼承的特點

分類:

單繼承:每個類只能繼承乙個類的方式稱為單繼承

格式:

class

父類:

pass

class 子類(父類):#

繼承操作的關鍵步驟

pass

多繼承:每個類可以同時繼承多個類的方式稱為多繼承。格式:

class

父類1:

pass

class

父類2:

pass

class

子類(父類1,父類2):

pass

菱形繼承:格式:

class

a:

pass

class

b(a):

pass

class

c(a):

pass

class

d(b,c):

pass

a /\

b c

\ /d

菱形存在的問題:如果bc類同時繼承了a類,d類又繼承了bc兩個類的情況下(菱形繼承),在呼叫bc中某個同名方法(該方法都繼承自a類)時會導致繼承自a類的該方法被多次呼叫。產生邏輯問題!所以python使用 super() 類來解決了多繼承的菱形繼承問題

super():   格式:super().方法()

super不是乙個關鍵字,也是不是有函式,他是乙個類

super()的作用不是查詢父類,而是找mro列表的上乙個類

super()和父類沒有任何實質性的關係,只是有時候能呼叫到父類而已。

在單繼承的情況下,super()永遠呼叫的是父類/父物件

3.多型:

我們在有一些方法在父類已經定義好了,但是子類我們自己再用的時候,發現,其實,我們的雖然都是計算工資的,但是普通員工的工資計算方法跟經理的計算方法是不一樣的,所以這個時候,我們就不能直接呼叫父類的這個計算工資的方法了。這個時候我們就需要用到物件導向的另乙個特性,多型。我們要在子類裡面把父類裡面定義計算工資的方法在子類裡面重新實現一遍。多型包含了過載和重寫。

這裡就不舉例了,上兩張吧!

重寫重寫很簡單就是把子類從父親類裡繼承下來的方法重新寫一遍,這樣,父類裡相同的方法就被覆蓋了,當然啦,你還是可以通過super.caculsalary方法來呼叫父類的工資計算方法。

過載過載就是類裡面相同方法名,不同形參的情況,可以是形參型別不同或者形參個數不同,或者形參順序不同,但是不能使返回值型別不同。

物件導向三大特徵

1.繼承 什麼是繼承 繼承是一種建立新類的方式,在python中,新建的類可以繼承乙個或多個父類,父類又可稱為基類或超類,新建的類稱為派生類或子類 python中類的繼承分為 單繼承和多繼承 class parentclass1 定義父類 pass class parentclass2 定義父類 p...

物件導向三大特徵

是指將物件的狀態資訊隱藏在物件內部,不允許外部程式直接訪問而是通過類提供的方法實現類內資訊的操作和訪問。可以通過j a中的訪問控制符來實現。實現復用。j a中,通過extends實現繼承 每個類只有乙個直接父類 j a.lang.object是所有類的直接 間接父類 子類獲得父類的全部屬性和方法 除...

python物件導向的三大特徵 多型

什麼是多型 由不同的類例項化得到的物件,呼叫同乙個方法,執行的邏輯不同 多型體現在由乙個類例項化出多個物件,這些物件執行相同的方法時,執行的過程和結果不一樣 不同的物件呼叫相同的方法 多型的概念指出來物件如何通過他們共同的屬性和動作來操作及訪問,而不需考慮具體的類 多型繼承有兩層意義 1.改變 2....