Python基礎(chǔ)入門(mén)教程25:企業(yè)級(jí)開(kāi)發(fā)基礎(chǔ)6 面向?qū)ο筇卣鳎ɡ^承)
來(lái)源:
奇酷教育 發(fā)表于:
2017-06-20 15:32:09
面向?qū)ο蟪绦蛟O(shè)計(jì)最主要的有三個(gè)特征:封裝、繼承、多態(tài)本節(jié)內(nèi)容主要講解面向?qū)ο蟮牡谝粋€(gè)特征:繼承1 繼承的意義繼承是讓我們抽象的對(duì)象
面向?qū)ο蟪绦蛟O(shè)計(jì)最主要的有三個(gè)特征:封裝、繼承、多態(tài)
本節(jié)內(nèi)容主要講解面向?qū)ο蟮牡谝粋€(gè)特征:繼承
1 繼承的意義
繼承是讓我們抽象的對(duì)象之間存在一定的所屬關(guān)系
在繼承關(guān)系中,我們一定要明確會(huì)出現(xiàn)這樣的一種關(guān)系~父類(lèi)、子類(lèi),子類(lèi)繼承自父類(lèi),可以繼承父類(lèi)中的公開(kāi)的屬性和方法(不能繼承私有的屬性或者方法)
其實(shí)我們?cè)谇懊娑x對(duì)象的時(shí)候已經(jīng)使用過(guò)了繼承,python中所有的對(duì)象都是直接或者間接繼承自object對(duì)象的
我們可以看到,在自定義類(lèi)Man和Women中,只是簡(jiǎn)單定義了一個(gè)init方法,沒(méi)有其他的代碼,但是我們創(chuàng)建的Man類(lèi)型的對(duì)象和Women類(lèi)型的對(duì)象,卻可以使用父類(lèi)Person中定義的方法get_gender()以及其他,在一定程度上,簡(jiǎn)化了我們的開(kāi)發(fā),同時(shí)提高了程序的擴(kuò)展性
2. 繼承中類(lèi)型的關(guān)系
繼承是類(lèi)型之間的關(guān)系:繼承中,首先必須是兩個(gè)或者兩個(gè)以上的類(lèi)型之間的關(guān)系,注意是類(lèi)型之間的關(guān)系
繼承中的父類(lèi)和子類(lèi):被繼承的稱(chēng)為父類(lèi),實(shí)現(xiàn)繼承的稱(chēng)為子類(lèi),子類(lèi)繼承自父類(lèi),實(shí)現(xiàn)的是一種A is a B的關(guān)系
如:貓是一種類(lèi)型,繼承自動(dòng)物這種類(lèi)型,反映出來(lái)的是貓這種類(lèi)型可以具備動(dòng)物具備的屬性和行為,同時(shí)貓是一種動(dòng)物。(切記,A繼承B反映的是A is a B的關(guān)系,不能反過(guò)來(lái),貓是一種動(dòng)物,不能說(shuō)動(dòng)物是貓)
多繼承機(jī)制:一個(gè)父類(lèi)可以有多個(gè)子類(lèi),一個(gè)子類(lèi)同樣也可以有多個(gè)父類(lèi)
某些情況下,我們生活中會(huì)出現(xiàn)這樣的情況,一個(gè)小孩既是父親的兒子,要具備兒子應(yīng)該具備的功能,同時(shí)也是一個(gè)學(xué)生要具備學(xué)生應(yīng)該具備的功能,此時(shí)就需要使用Python中的多繼承來(lái)實(shí)現(xiàn)了
數(shù)據(jù)繼承和訪問(wèn),在python的繼承機(jī)制中,私有的屬性是不允許被繼承和互相訪問(wèn)的,子類(lèi)不能繼承和訪問(wèn)父類(lèi)中私有的屬性和方法,父類(lèi)同樣也不能訪問(wèn)子類(lèi)中私有的屬性和方法
子類(lèi)只能繼承父類(lèi)中公開(kāi)的屬性和方法
子類(lèi)中可以通過(guò)父類(lèi)的名稱(chēng)或者super()來(lái)訪問(wèn)父類(lèi)的屬性和方法
3. 繼承時(shí)的方法重寫(xiě)(方法覆蓋)
在子類(lèi)繼承自父類(lèi)之后,可以直接使用父類(lèi)中定義的公開(kāi)的方法進(jìn)行操作
>>>更多VR/AR入門(mén)教程:VR入門(mén)