day21 物件導向之繼承和組合

2022-09-11 16:21:20 字數 2663 閱讀 7113

繼承

組合oop的三大特徵之一:封裝,繼承,多型

繼承什麼是繼承?

#

繼承是一種關係,描述兩個物件之間,什麼是什麼的關係

例如:麥兜,佩奇,豬剛鬣 都是豬啊,

#在程式中,繼承描述的是類和類之間的關係

例如:a繼承了b, a就能直接使用b已經存在的方法和屬性,a稱之為子類,b稱之為父類,也稱之為基類

為什麼要使用繼承?

#

繼承的一方可以直接使用被繼承一方已經有的東西

其目的是為了重用已經有的**,提高重用性

如何使用繼承?

語法:

class

類名稱(父類的名稱):

類的內容

#在python中 乙個子類可以同時繼承多個父類

基本語法

class

base:

bsec = '

這是乙個基類

'def

msg(self):

print

(self.bsec)

defmake_money(self):

print('

一天乙個小目標')

class

subbase(base):

pass

sub = subbase() #

少了乙個括號

sub.make_money()

#typeerror: make_money() missing 1 required positional argument: 'self'

print(sub.bsec) #

sub.msg()

正確的使用繼承:

#

1.先抽象在繼承

#2.繼承乙個已經現存的類,擴充套件或是修改原始的功能

附:關於抽象

#不具體,不清晰,很模糊,看不懂

#將多個子類中相同的部分,進行抽取,形成乙個新的類,這個過程也稱之為抽象的過程

正確的使用繼承:

屬性的查詢順序:

class

a:text = "

haha

"class

b(a):

text = "

heihei

"pass

b =b()

b.text = "

xixi

"print(b.text)

# 物件自己的 - > 所在類中 -> 找父類 - >父類的父類 ->object

繼承相關術語:

#

派生:當乙個子類**現了與父類中不同的內容時,這個子類就稱之為派生類

通常子類都會寫一些新的**,不可能和父類完全一樣,既通常都是派生類,所以派生類指的就是子類

#覆蓋:

也稱之為重寫 overrides

當子類出現了與父類名稱完全一致的屬性或是方法

練習:實現乙個可以限制元素型別的容器 (字典,列表,元組,集合,字串)

子類中訪問父類的內容:

語法:

方式1:

super(當前類名稱,self).你要調的父類的屬性或方法

方式2:

super().你要調的父類的屬性或方法

方式3:

類名稱.你要調的父類的屬性或方法(self)

#方式3與繼承無關

強調再強調:

#

當你繼承乙個現有的類,並且你覆蓋了父類的init方法時,必須在初始化方法的第一行呼叫父類的初始化方法,並傳入父類所需的引數

組合

#

也是一種關係,描述兩個物件之間 是什麼有什麼的關係

例如,學生有手機 ,遊戲中角色擁有某些裝備

將乙個物件作為另乙個物件的屬性,(既什麼有什麼)

組合的目的:

#

也是為了重用現有**

什麼時候使用繼承:分析兩個類的關係,到底是不是:什麼是什麼的關係

什麼時候使用組合:如果兩個類之間 沒有太大的關係,完全不屬於同類

另外組合相比繼承,耦合度更低了

了解知識點

## 菱形繼承

#

首先明確python支援多繼承

補充:新式類與經典類

python3中任何類都是直接或間接繼承了object

新式類,任何顯式或隱式地繼承自object的類就稱之為新式類, python3中全都是新式類

經典類,既不是object的子類 ,僅在python2**現 #

當出現了菱形繼承時,新式類,先深度,當遇到了共同父類時就廣度

新式類,就是深度優先

# 小結:

1.繼承是什麼

2.為什麼用繼承

3.語法

4.先抽象在繼承

6.派生

7.覆蓋

8.子類訪問父類的屬性或方法 super ().名字

​ 如果你繼承乙個已有的類,並且你覆蓋了init 一定要先呼叫父類的init

9.繼承的原理,mro列表

10,新式類與經典類

11.菱形繼承 了解

12,屬性的查詢順序

day21物件導向 類

1 1 定義階段 2class harvordstudent 3 school harvord 4 defchoose course self 5print hello 6print harvordstudent 類的本質是命名空間 容器,可以增刪改查名字7 訪問屬性 命名空間中名字 的語法,之後的...

day21 物件導向高階

多型指的是一類事物有多種形態,比如動物有多種形態 貓 狗 豬 class animal 同一類事物 動物 def talk self pass class cat animal 動物的形態之一 貓 def talk self print 喵喵喵 class dog animal 動物的形態之二 狗 ...

C 學習day21之繼承與派生2

includeusing namespace std 這裡會輸出father和son,跟我們前面講的不一樣啊。這裡的父類構造器呼叫了。if 0 class father class son public father int main endif 如果你father int i 這樣的話,會報錯的。...