tips:本文儘可能用樸實易懂的語言來解釋面向對象的思想。
程序員
上帝首先創造了幾個原始類 original class
。例如:動物類Animal
,植物類Plant
,地形類Topography
,氣象類Atmosphere
等做爲地球上一切物質的開端,而本文咱們將使用動物類做爲例子。code
在創造了動物類Animal
以後,爲它添加了公共屬性:mouth:true
和公共方法eat(){},mating(){}
。對象
以後他決定開始細分,這裏咱們作的簡單一點,並不按照「界門綱目科屬種」的分類依據,而是直接按照人類Human
,貓類Cat
,狗類Dog
等進行細分。繼承
他根據動物類Animal
創造了人類Human
,咱們能夠說,人類繼承自動物類,因此人類這個類中也會存在動物類的公共屬性和公共方法。一樣的,人類也有本身的公共屬性stand:true
和公共方法:farming(){}
。而後,上帝根據人類Human
創造了一我的:小明。接口
小明是一個根據Human
創造出的實例對象,20歲的會彈鋼琴的男性程序員,他同時繼承了Animal
和Human
類的公共屬性和公共方法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
方法,返回的孩子卻不同呢?這就是多態。當同一個操做(方法)做用與不一樣的對象時,會產生不一樣的執行結果。方法
以上,面向對象的三個基本特徵 封裝、繼承、多態 都講完了。確定講的不夠深刻,若是有什麼理解上不正確的歡迎在評論區中指正,也歡迎你們討論。