和貓,都是它的子類。
這個很好理解,跟動物分類學一樣,界門綱目科屬種,大類下面有小類,逐級劃分。
倘若有一天,你昇天之後成為了造物主,閒著沒事想要自己創造一個新的哺乳動物。注意你要創造哺乳動物,也就是不論你設計出了什麼逆天東西,它都得符合哺乳動物的屬性和方法,被歸為哺乳綱。
這個時候,你不用從頭開始去編寫它的基因、去從一團泥巴開始捏泥人,而是可以命名一個子類,讓它繼承父類的屬性和方法,自動成為哺乳動物,用肺呼吸、能跑能跳、能嗷嗷叫、能動腦子。
也許你還想要給這個世界一個小小的震撼,讓這個哺乳動物有一些逆天的功能,比如一蹦三尺高、不好好四腳走路非要滾著走。你就可以覆寫子類的方法,用你所定義的‘能跑能跳’去代替父類一般意義上的能跑能跳。這個就叫做多型。
進一步的,如果有一天你心裡不太舒坦,想要對世間萬物降下懲罰,讓它們每走兩步必須仰天長叫一聲。這個時候你不需要重新定義父類和子類,只需要寫一個函式,就可以實現你的惡趣味。
你只需要把子類傳入函式中,函式本身並不事先知道你傳的是貓還是狗,但是當你給它貓時,它就喵喵叫,給它狗時,它就汪汪叫。
這就是多型的威力。”
艾達否說完,眨巴著眼,“聽懂了嗎?這些概念十分抽象,和指標一樣,被稱為程式設計初學者的攔路虎。”
盧赫若有所思,好像有點悟了,“這麼精妙的設計,它的創造者一定個天才。”
艾達否看到盧赫的反應,一臉神棍像地坐直身,意味深長地說:
“人從自然中來。物件導向的創造者Alan Kay擁有生物學背景,他只是在模仿而已。”