繼承是子對象可以繼承父對象的屬性和行為浑测,亦即父對象擁有的屬性和行為夺鲜,其子對象也就擁有了這些屬性和行為憋槐,一個類型繼承另一個類型和蚪,當前類型就會擁有另一個類型的公共的屬性和方法止状,達到代碼的重復使用的目的。這非常類似大自然中的物種遺傳攒霹。
繼承的語法:
>>>class類型(被繼承的類型):
>>> ? ? ? pass
繼承中出現的術語:
父類:被繼承的類怯疤,也稱為基類、超類
子類:當前類催束,也稱為派生類
子類繼承父類集峦,體現的時A?isa?B的關系
子類繼承父類,就可以使用父類中所有的公開的屬性和方法
繼承鏈
A繼承B,B繼承C塔淤,C繼承D
A直接繼承了B摘昌,間接繼承了C,D;此時A創(chuàng)建的對象高蜂,可以同時使用B,C,D中所有公開的屬性和方法
多繼承
python中聪黎,一個類型,可以同時繼承多個類型备恤,同時擁有所有繼承類型的所有公開的屬性和方法
備注:在進行代碼設計的過程中稿饰,可能會出現多繼承,所以盡量不要在父類中定義相同名稱的屬性或者方法
備注2:如果父類中出現了相同名稱的屬性和方法露泊,在使用的時候子類調用時會優(yōu)先繼承優(yōu)先調用喉镰。
方法重寫:
子類在自己類中重新定義父類中已經存在的方法,在執(zhí)行該方法時惭笑,如果子類中沒有重寫就直接調用父類的方法侣姆,如果子類重寫了該方法,就直接調用子類重寫的方法脖咐!
子類中铺敌,訪問父類的屬性和方法:
>>>class?User(Person):
>>>def?__init__(self,?name,?age):
#直接通過父類的類名稱調用父類的屬性和方法
>>>Person.__init__(name,?age)
#通過super()來調用父類的屬性和方法
>>>super().__init__(name,?age)
繼承是使用已存在的類的定義作為基礎建立新類的技術,新類的定義可以增加新的數據或新的功能屁擅,也可以用父類的功能偿凭,但不能選擇性地繼承父類。
這種技術使得復用以前的代碼非常容易派歌,能夠大大縮短開發(fā)周期弯囊,降低開發(fā)費用。比如可以分隔符先定義一個類叫車胶果,車有以下屬性:車體大小匾嘱,顏色,方向盤早抠,輪胎霎烙,而又由車這個類派生出轎車和卡車兩個類,為轎車添加一個小后備箱蕊连,而為卡車添加一個大貨箱悬垃。其中父類又叫超類或基類,子類又叫派生類甘苍。
父類是子類的一般化尝蠕,子類是父類的特化(具體化)。
繼承所表達的就是一種對象類之間的相交關系载庭,它使得某類對象可以繼承另外一類對象的數據成員和成員方法看彼。若類B繼承類A廊佩,則屬于B的對象便具有類A的全部或部分性質(數據屬性)和功能(操作),我們稱被繼承的類A為基類靖榕、父類或超類标锄,而稱繼承類B為A的派生類或子類。
繼承避免了對一般類和特殊類之間共同特征進行的重復描述序矩。
繼承的意義鸯绿,在我看來跋破,繼承極大提升了代碼的復用性簸淀,間接提升了代碼的可讀性,使程序的結構更加簡潔明了