(本想自己寫 但是發現乙個更好的。)
抽象類的多型
場景描述
一位剛畢業的老師,目前只能通過騎車上班,多年後終於坐騎公升級了,有了自己的小汽車,於是騎著小汽車上班。
騎自行車上班
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 不同的物件...