位置:首頁(yè) > 軟件操作教程 > 編程開(kāi)發(fā) > Python > 問(wèn)題詳情

python-繼承

提問(wèn)人:楊紫紅發(fā)布時(shí)間:2020-12-04
面向?qū)ο蟮木幊處?lái)的主要好處之一是代碼的重用,實(shí)現(xiàn)這種重用的方法之一是通過(guò) 繼承 機(jī)制。繼承完全可以理解成類(lèi)之間的 類(lèi)型和子類(lèi)型 關(guān)系。 
假設(shè)你想要寫(xiě)一個(gè)程序來(lái)記錄學(xué)校之中的教師和學(xué)生情況。他們有一些共同屬性,比如姓名、年齡和地址。他們也有專(zhuān)有的屬性,比如教師的薪水、課程和假期,學(xué)生的成績(jī)和學(xué)費(fèi)。 
你可以為教師和學(xué)生建立兩個(gè)獨(dú)立的類(lèi)來(lái)處理它們,但是這樣做的話(huà),如果要增加一個(gè)新的共有屬性,就意味著要在這兩個(gè)獨(dú)立的類(lèi)中都增加這個(gè)屬性。這很快就會(huì)顯得不實(shí)用。 

一個(gè)比較好的方法是創(chuàng)建一個(gè)共同的類(lèi)稱(chēng)為 SchoolMember 然后讓教師和學(xué)生的類(lèi) 繼承 這個(gè)共同的類(lèi)。即它們都是這個(gè)類(lèi)型(類(lèi))的子類(lèi)型,然后我們?cè)贋檫@些子類(lèi)型添加專(zhuān)有的屬性。

使用這種方法有很多優(yōu)點(diǎn)。如果我們?cè)黾?改變了 SchoolMember 中的任何功能,它會(huì)自動(dòng)地反映到子類(lèi)型之中。例如,你要為教師和學(xué)生都增加一個(gè)新的身份證域,那么你只需簡(jiǎn)單地把它加到 SchoolMember 類(lèi)中。然而,在一個(gè)子類(lèi)型之中做的改動(dòng)不會(huì)影響到別的子類(lèi)型。另外一個(gè)優(yōu)點(diǎn)是你可以把教師和學(xué)生對(duì)象都作為 SchoolMember 對(duì)象來(lái)使用,這在某些場(chǎng)合特別有用,比如統(tǒng)計(jì)學(xué)校成員的人數(shù)。一個(gè)子類(lèi)型在任何需要父類(lèi)型的場(chǎng)合可以被替換成父類(lèi)型,即對(duì)象可以被視作是父類(lèi)的實(shí)例,這種現(xiàn)象被稱(chēng)為多態(tài)現(xiàn)象。 
另外,我們會(huì)發(fā)現(xiàn)在 重用 父類(lèi)的代碼的時(shí)候,我們無(wú)需在不同的類(lèi)中重復(fù)它。而如果我們使用獨(dú)立的類(lèi)的話(huà),我們就不得不這么做了。 在上述的場(chǎng)合中,SchoolMember 類(lèi)被稱(chēng)為 基本類(lèi) 或 超類(lèi) 。而 Teacher 和
Student 類(lèi)被稱(chēng)為 導(dǎo)出類(lèi) 或 子類(lèi) 。

繼續(xù)查找其他問(wèn)題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部