面向對象——繼承

繼承:面向對象的一個非常重要的特征,通過一個類型對另一個類型的繼承,達到代碼重復利用的目的,同時提高了代碼功能的擴展性
繼承的語法: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
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容