python-繼承
假設(shè)你想要寫(xiě)一個(gè)程序來(lái)記錄學(xué)校之中的教師和學(xué)生情況。他們有一些共同屬性,比如姓名、年齡和地址。他們也有專有的屬性,比如教師的薪水、課程和假期,學(xué)生的成績(jī)和學(xué)費(fèi)。
你可以為教師和學(xué)生建立兩個(gè)獨(dú)立的類來(lái)處理它們,但是這樣做的話,如果要增加一個(gè)新的共有屬性,就意味著要在這兩個(gè)獨(dú)立的類中都增加這個(gè)屬性。這很快就會(huì)顯得不實(shí)用。
一個(gè)比較好的方法是創(chuàng)建一個(gè)共同的類稱為 SchoolMember 然后讓教師和學(xué)生的類 繼承 這個(gè)共同的類。即它們都是這個(gè)類型(類)的子類型,然后我們?cè)贋檫@些子類型添加專有的屬性。
使用這種方法有很多優(yōu)點(diǎn)。如果我們?cè)黾?改變了 SchoolMember 中的任何功能,它會(huì)自動(dòng)地反映到子類型之中。例如,你要為教師和學(xué)生都增加一個(gè)新的身份證域,那么你只需簡(jiǎn)單地把它加到 SchoolMember 類中。然而,在一個(gè)子類型之中做的改動(dòng)不會(huì)影響到別的子類型。另外一個(gè)優(yōu)點(diǎn)是你可以把教師和學(xué)生對(duì)象都作為 SchoolMember 對(duì)象來(lái)使用,這在某些場(chǎng)合特別有用,比如統(tǒng)計(jì)學(xué)校成員的人數(shù)。一個(gè)子類型在任何需要父類型的場(chǎng)合可以被替換成父類型,即對(duì)象可以被視作是父類的實(shí)例,這種現(xiàn)象被稱為多態(tài)現(xiàn)象。
另外,我們會(huì)發(fā)現(xiàn)在 重用 父類的代碼的時(shí)候,我們無(wú)需在不同的類中重復(fù)它。而如果我們使用獨(dú)立的類的話,我們就不得不這么做了。 在上述的場(chǎng)合中,SchoolMember 類被稱為 基本類 或 超類 。而 Teacher 和
Student 類被稱為 導(dǎo)出類 或 子類 。
點(diǎn)擊加載更多評(píng)論>>