物件導向三大特性之多型

2021-10-25 19:40:25 字數 1607 閱讀 8065

(本想自己寫 但是發現乙個更好的。)

抽象類的多型

場景描述

一位剛畢業的老師,目前只能通過騎車上班,多年後終於坐騎公升級了,有了自己的小汽車,於是騎著小汽車上班。

騎自行車上班

1.自行車類

public

class

bike

public

void

stop()

}

2.教師類

public

class

teacher

public

void

close

(bike bike)

}

測試類

public

class

test01

}

開小車上班

如果此時我們還是這樣先去寫乙個小汽車類,然後在教師類裡過載open和close方法,那麼這樣是不是會覺得**冗餘呢,有些朋友會說並沒有,那當我們面對更多人,以及更多的上班方式時,那你是不是要分別為他們準備一套,那樣未必太麻煩了,而且還會破壞ocp原則;這時,我們就可以用多型的方式完成這樣,只需要提取乙個交通工具類,然後當需求增加的時候我們直接擴充這個交通工具類就可以了。

ocp原則 - 開閉原則:需求改動,竟可能少影響原有**

c - close:對原有**進行修改,是拒絕的

p - principle:原則

vehicle類(交通工具)

public

abstract

class

vehicle

bike 類(自行車類)

public

class

bike

extends

vehicle

@override

public

void

stop()

}

car類(小汽車類)

public

class

carextends

vehicle

@override

public

void

stop()

}

teacher類(需求者類)

public

class

teacher

public

void

close

(vehicle v)

}

test類(測試類)

public

class

test01

}

在我們公升級後,如果需求增加時,比如有乙個電動車的需求,那麼我們的步驟就應該是,建立乙個電動車的類去繼承交通工具類,然後重寫交通工具類的抽象方法。建立電動車物件指向父類引用,再交給給需求者使用便可。在這裡同樣是呼叫t.open(v);和t.close(v);這是結果就不一樣的。這就是多型的結果,不同人都要上班,就乙個上班的動作,而產生上班方式的結果不一樣。

物件導向三大特性之多型

多型 同乙個物件在不同時刻表現出來的不同狀態。多型的前提和體現 存在繼承關係或者實現關係 這裡的實現是指介面間的關係 有方法的重寫。有父類引用指向子類物件。多型中成員的訪問特點 訪問成員變數時 首先定義乙個動物類 其次定義乙個子類來繼承它 定義乙個測試類 由此可見當我們用多型的形式去訪問類中的成員變...

物件導向三大特性之多型

多型更像是一種思想,而並非具體的技術。因為繼承的存在,從而引發了多型,python本就是多型的形式,就像現實世界一樣。都是起源於某一單細胞生物但是經過不斷的演化差異化越來越大。多型的定義即是 在不同的類中例項化得到的物件下的相同的方法,實現的過程不一樣。這個就很有意思了.多型的前提是必須有繼承的支援...

物件導向 三大特性之多型

在python當中 處處是多型 一切皆物件 廣義的多型 乙個類能表現出的多種形態 木頭 桌子 板凳 使用者 vip使用者 svip使用者 在物件導向方法中一般是這樣表述多型性 向不同的物件傳送同一條訊息 obj.func 是呼叫了obj的方法func,又稱為向obj傳送了一條訊息func 不同的物件...