Python類的繼承
關(guān)于面向?qū)ο?一定要說到類這一結(jié)構(gòu).
這一節(jié)主要介紹Python類的繼承.
?

比如下面的代碼,一個(gè)是父類Father,
另一個(gè)是子類Son.
其中子類Son繼承了父類Father.并且沒有經(jīng)過修改.
所以說子類和父類基本上就是一個(gè)類.
運(yùn)行結(jié)果如下


從中可以看出,子類完全繼承了父類的所有特性,
包括構(gòu)造函數(shù)中輸出”成年人”,還有父類里面的起床時(shí)間7:00.
?
但是我們經(jīng)常不會(huì)這樣用,
因?yàn)槲覀冎詷?gòu)造子類,就是為了在父類的基礎(chǔ)上做修改,產(chǎn)生一個(gè)區(qū)別于父類的類型.
比如:
1 我們可以在子類中添加新的方法.讓他擁有更多的功能.
2 可以重寫構(gòu)造函數(shù),因?yàn)楦割愖詭У臉?gòu)造函數(shù)并不一定適用于子類,比如上面的例子,父類都是”成年人”,但是子類就不一定是成年人了,這里就需要,進(jìn)行重寫.
3 可以重寫父類中其他的方法,比如父類中weekend這個(gè)方法,就是周末,父親”加班”,這可能會(huì)不適合子類,可以修改成子類”放假”.
4 我們想要在父類的構(gòu)造函數(shù)中添加一些東西,不完全改變它,比如”成年人”,然后在這個(gè)基礎(chǔ)上,添加”沒有長胡子”,就可以用super關(guān)鍵詞.在原來的構(gòu)造函數(shù)基礎(chǔ)上,添加新的東西.
?

下面開始一一演示:

1 在子類中添加新的方法,
輸出:


2 重寫構(gòu)造函數(shù):
輸出:

可以看到,重寫了構(gòu)造函數(shù)后,運(yùn)行子類,就不會(huì)再調(diào)用父類的構(gòu)造函數(shù)了.
如果不重寫,就會(huì)自動(dòng)調(diào)用父類的構(gòu)造函數(shù).

3 改寫父類的某些方法,
比如父類的周末weekend是加班,但是子類根據(jù)實(shí)際情況不是”加班”而是”休假”
所以進(jìn)行修改:
運(yùn)行:


4 進(jìn)行構(gòu)造函數(shù)的繼承,
上面的原父類,構(gòu)造函數(shù)會(huì)輸出”成年人”,
如果創(chuàng)建子類,就會(huì)直接調(diào)用父類的構(gòu)造函數(shù),從而輸出”成年人”,
這顯然是不標(biāo)準(zhǔn)的,因?yàn)橛行﹥鹤觭on是”成年人”,有些是”未成年人”.
所以子類需要對父類的構(gòu)造函數(shù)進(jìn)行補(bǔ)充.這里會(huì)用到super關(guān)鍵字.
運(yùn)行:
