面向對象三大特性:封裝、繼承、多態 繼承的概念: 在定義類時,可以從已有類當中提取想要的內容 被繼承的類稱為父類、基類、超類,新定義的類稱為子類、派生類 註意:如果派生類中的屬性與基類屬性重名,那麼派生類的屬性會覆蓋掉基類的屬性。包括初始化函數。 派生類在初始化函數中需要繼承和修改初始化過程,使用’ ...
面向對象三大特性:封裝、繼承、多態
繼承的概念:
在定義類時,可以從已有類當中提取想要的內容
被繼承的類稱為父類、基類、超類,新定義的類稱為子類、派生類
註意:如果派生類中的屬性與基類屬性重名,那麼派生類的屬性會覆蓋掉基類的屬性。包括初始化函數。
派生類在初始化函數中需要繼承和修改初始化過程,使用’類名+__init__(arg)’來實現繼承和私有特性,也可以使用super()函數。
繼承的優點:
1.節省代碼
2.規範代碼
繼承的作用
面向對象的編程帶來的主要好處之一是代碼的重用,實現這種重用的方法之一是通過繼承機制。繼承完全可以理解成類之間的類型和子類型關係。
初識繼承:
只執行本類的方法
只執行父類的方法
既執行父類的方法又執行本類的方法
父類名.類名(參數)
super().方法名(參數(self參數自動傳值))
類
新式類:凡是繼承object類都是新式類
python3x所有的類都為新式類,因為python3x中的類都預設繼承object
經典類:不繼承 object類都是經典類
python2x(既有新式類,又有經典類)所有的類都預設不繼承object類,都預設為經典類,可以用object繼承為新式類
繼承的分類:
1.單繼承
新式類和經典類查詢順序一樣
2.多繼承
新式類:遵循廣度優先
一條路走到倒數第二級,判斷,如果其他路能一條路走到低,則返回走另一條路,如果不能,則走到終點
經典類:遵循深度優先
一條路走到低
廣度優先的圖解如下:
代碼如下:
# class A:
# pass
# # def func(self):
# # print('IN A')
#
# class B(A):
# pass
# # def func(self):
# # print('IN B')
#
# class C(A):
# # pass
# def func(self):
# print('IN C')
#
# class D(B):
# pass
# # def func(self):
# # print('IN D')
#
# class E(C):
# # pass
# def func(self):
# print('IN E')
#
# class F(D,E):
# pass
# # def func(self):
# # print('IN F')
#
# f1 = F()
# f1.func()