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