繼承:面向對象的一個非常重要的特征,通過一個類型對另一個類型的繼承,達到代碼重復利用的目的,同時提高了代碼功能的擴展性
繼承的語法:class 類型(父類):
pass
一切皆對象:所有的類型,都是直接或者間接繼承自object對象
1.1繼承
父類:被繼承的類,稱為父類,也稱為基類、超類
子類:繼承了父類的類,稱為子類,也稱為派生類
子類擁有父類的公共屬性和公共方法
案例:魯智深是天神下凡
class God():
def __init__(self,name):
self.name = name
def eat(self):
print("修煉,吸天地之靈氣,日月之精華···")
class LZS(God):
def drink(self):
print("去青樓,喝花酒·····")
class TianPeng(God):
z = LZS("魯智深")
z.eat()
z.drink()
bajie = TianPeng("八戒")
bajie.eat()

Paste_Image.png
1.2繼承父類,繼承父類
子類繼承父類,父類還可以繼承父類
子類擁有所有父類的公共屬性和公共方法
提高了代碼功能的復用性
1.3 多繼承
一個子類,可以同時繼承多個父類
多繼承,反應了生活中表現(xiàn)的多個角色
子類可以同時使用多個父類的屬性和方法
父類中出現(xiàn)相同屬性或者方法,優(yōu)先繼承權
類名稱.mro:查看屬性/方法搜索順序
盡量不要在多個類中出現(xiàn)名稱相同的屬性和方法
定義了一個基礎類
class Person(object):
def __init__(self):
self.__name = "tom"
class Student(Person):
def eat(self):
print("吃食堂···")
def respect(self):
print("尊師重道")
class Son(Person):
def eat(self):
print("吃零食···")
def fealty(self):
print("孝敬長輩")
class User(Son ,Student):
def play(self):
print("玩游戲")
u = User()
u.play()
u.respect()
u.fealty()
u.eat()
print(User.__mro__)

Paste_Image.png
1.4 方法重寫
方法重寫:子類重新定義父類中存在的方法
重寫體現(xiàn)了子類的獨立性和可變性(多態(tài))
方法重寫的條件
繼承的關系
父類存在的方法
子類重新定義
classGod(object):
def__init__(self,name):
self.name=name
defeat(self):
print("修煉,吸天地之靈氣,日月之精華···")
classLZS(God):
def drink(self):
print("去青樓,喝花酒·····")
classTianPeng(God):
def eat(self):
print("一頓吃十大碗飯····")
def drink(self):
print("喝湯")
z=LZS("魯智深")
z.eat()
z.drink()
bajie=TianPeng("八戒")
bajie.eat()
bajie.drink()

Paste_Image.png