若是上帝是程序員,他是如何創造世界上全部動物的?

tips:本文儘可能用樸實易懂的語言來解釋面向對象的思想。程序員

荒古時期

上帝首先創造了幾個原始類 original class。例如:動物類Animal,植物類Plant,地形類Topography,氣象類Atmosphere等做爲地球上一切物質的開端,而本文咱們將使用動物類做爲例子。code

分類而生

在創造了動物類Animal以後,爲它添加了公共屬性mouth:true公共方法eat(){},mating(){}對象

以後他決定開始細分,這裏咱們作的簡單一點,並不按照「界門綱目科屬種」的分類依據,而是直接按照人類Human,貓類Cat,狗類Dog 等進行細分。繼承

他根據動物類Animal創造了人類Human,咱們能夠說,人類繼承自動物類,因此人類這個類中也會存在動物類的公共屬性和公共方法。一樣的,人類也有本身的公共屬性stand:true公共方法farming(){} 。而後,上帝根據人類Human創造了一我的:小明。接口

小明是一個根據Human創造出的實例對象,20歲的會彈鋼琴的男性程序員,他同時繼承AnimalHuman類的公共屬性公共方法ip

mouth:true,
stand:true,
farming(something){
    ...
},
eat(something){
    ...
},
mating(someone){
    return xxx
}

而他的私有屬性occupation:programmer私有方法playingPiano(){...},小明把他的我的狀況都藏起來【封裝】,只有他告訴別人本身的狀況,別人纔會知道,並且別人不知道他會彈什麼曲子的,只能說「小明你彈個鋼琴給我聽一下」。調用
小明.playingPiano()封裝以後只有對外提供接口後纔可使用io

有一天,小明認識了一個女生小白,小白是一個21歲的會唱歌的客服,私有屬性customService私有方法singing(){...}。後來他們談戀愛而且結婚了,有一天小明調用了本身的方法mating,並將小白做爲參數傳入,隨後return出了一個孩子:小黑。可是小黑並無繼承小明的playingPiano和小紅的singing,反卻是有了本身的私有屬性tellingStory。但惟一和小明還有小紅同樣的是,他繼承了動物類Animal和人類Human公共屬性公共方法class

與此同時,另外一對夫妻小華和小花,他們也調用了本身的mating,可是 return 的是另外一個與小黑不一樣的孩子——小月,她的私有屬性與她的父母都不一樣,是playingBasketball,但一樣的,她也繼承了動物類Animal和人類Human公共屬性公共方法程序

爲何都調用了mating方法,返回的孩子卻不同呢?這就是多態。當同一個操做(方法)做用與不一樣的對象時,會產生不一樣的執行結果。方法

以上,面向對象的三個基本特徵 封裝、繼承、多態 都講完了。確定講的不夠深刻,若是有什麼理解上不正確的歡迎在評論區中指正,也歡迎你們討論。

相關文章
相關標籤/搜索