Java三大特性想必你們都不陌生:封裝、繼承以及多態。不少剛接觸Java的小夥伴都會想,它們到底有什麼了不起之處,又賦予Java這門編程語言什麼魔力呢?今天咱們來探討一下吧~~編程
首先,名詞解釋:網絡
封裝,便是隱藏一切可隱藏的東西,對外界只提供最簡單的編程接口。好比,在一個類中,把數據和操做方法綁定起來,對數據的訪問只能經過這些 get/set 方法(又稱爲接口)來實現。編程語言
爲何封裝?好比,我是一個廚師,我有一本食譜,你今天想吃肉,讓我幫忙露兩手。具體加了多少鹽,放了多少醋你不須要關心(隱藏具體實現過程),你只管提出需求,我幫你實現(提供服務,即接口)。spa
繼承,從已有類獲得繼承信息建立新類的過程。提供信息的叫父類(超類、基類),獲得繼承信息的叫子類(派生類)。既保證了延續性,又能實現可變性。對象
爲何繼承?好比,我是一個廚師,廚藝高絕天下,你是我兒子,你天然要獲得個人真傳(繼承父類的信息)。但是,有一天,你說你想去唱去跳去打籃球(實現可變)。兒子長大了,理應去追逐你本身的舞臺,當爹的固然支持你(繼承的優勢展露無遺)。繼承
多態:容許不一樣子類型對象對同一消息作出不一樣響應,即,用一樣的對象,調用一樣的方法,可是作了不一樣的事情。分爲編譯時多態(如:方法重載,同一個方法實現多個不一樣的邏輯,並能夠在同一個類中實現。其實現的原理是,方法名相同,參數的個數或者類型不一樣)和運行時多態(如:方法重寫,一個類中不可能兩個定義同樣的方法。所以,重寫就是子類對父類定義的方法從新實現一次)。接口
爲何多態?好比,我是一個廚師,今天炒一道番茄雞蛋,以往炒這道菜我會加入小蔥和老薑作配料增香,可是今天小蔥被隔壁老王借走了,那麼我炒菜的時候就沒加蔥(參數個數不一樣),但這道菜仍是番茄炒蛋(編譯時多態);大兒子吃的很不滿意,決定去老李家菜地裏偷點蔥,回來從新炒一個番茄炒蛋,配料雖然齊了,可是火候太大,炒糊了;你也不開心了,內心想着:大家都不行,讓我來。因而把剩下的蔥都拿去炒菜了,此次火候小了一點,番茄的口感和雞蛋沒有融合在一塊兒,不過本質上和你哥哥炒的同樣都是一道番茄炒蛋(方法重寫)。get
好了,Java三大特性就總結到這,若是有人跟你擡槓,說Java不是應該有四大特性麼?你千萬不要以爲人家是在爲難你胖虎,由於,抽象也能算半個,只是日常淡出了你們的視線。編譯
那麼,什麼是抽象呢?抽象就是將一類對象的共同特徵總結出來,而後去構造類的過程(人類,特徵?不詳!)。包括數據抽象(手,足等??)和行爲抽象(吃飯、睡覺)兩方面,而抽象只關注對象有哪些屬性和行爲,並不關注這些行爲的細節是什麼(只須要關注人類有吃飯這個屬性便可,不須要關注用左手仍是右手)。原理
談完人類,內心面大約會有一丟丟小疑問,人的數據抽象是手足等特徵麼,那麼缺失了手足的殘疾人士就不屬於人類了麼?我以爲這個問題很是棒,首先,一我的的本質特徵必定不是手足五官等外在形態。這時候就會有小夥伴來擡槓了:啥意思,你見到一我的,不是憑藉外貌來辨別他們的麼?對的,咱們熟悉一我的,不少時候都會從外貌、聲音等明顯特徵來識別,但如果他們戴着網絡的面具,並且也沒有和你說話,那麼你是如何判斷這到底是不是咱們熟悉的那我的呢?
因此,你們認爲,人類的數據抽象究竟是什麼呢?