1、單繼承

單繼承

運(yùn)行結(jié)果
子類在繼承的時(shí)候,在定義類時(shí),小括號(hào)()中為父類的名字,父類的屬性、方法,會(huì)被繼承給子類。雖然子類沒(méi)有定義__init__方法,但是父類有,所以在子類繼承父類的時(shí)候這個(gè)方法就被繼承了,所以只要?jiǎng)?chuàng)建對(duì)象,就默認(rèn)執(zhí)行了那個(gè)繼承過(guò)來(lái)的__init__方法。


私有的屬性,不能通過(guò)對(duì)象直接訪問(wèn),但是可以通過(guò)方法訪問(wèn)
私有的方法,不能通過(guò)對(duì)象直接訪問(wèn)
私有的屬性、方法,不會(huì)被子類繼承,也不能被訪問(wèn)
一般情況下,私有的屬性、方法都是不對(duì)外公布的,往往用來(lái)做內(nèi)部的事情,起到安全的作用。
2、多繼承
Python不僅支持單繼承,同時(shí)還支持多繼承

多繼承

運(yùn)行結(jié)果
要想實(shí)現(xiàn)多繼承,只需在子類的小括號(hào)中寫多個(gè)父類即可。
當(dāng)父類中有同名方法時(shí)如何調(diào)用。
例:多個(gè)父類中有同名方法

多個(gè)父類中有同名方法

運(yùn)行結(jié)果
通過(guò)類對(duì)象的__mro__屬性能夠查看子類的繼承順序。
例:查看子類的繼承順序

查看子類的繼承順序

運(yùn)行結(jié)果
子類會(huì)按照繼承順序查找要調(diào)用的方法或者屬性,如果在一個(gè)類中找到了,就會(huì)停止向上尋找,如果始終沒(méi)有找到,則會(huì)拋出異常。
3、子類重寫父類方法
當(dāng)子類中定義了一個(gè)與父類方法名相同的方法時(shí),就會(huì)重寫父類方法。
例:子類重寫父類方法

子類重寫父類方法

運(yùn)行結(jié)果
4、子類調(diào)用父類方法

子類調(diào)用父類方法

運(yùn)行結(jié)果
子類如果需要調(diào)用父類方法,需要使用super()來(lái)指明調(diào)用父類方法。