1. 程式人生 > >淺談Java三大特性

淺談Java三大特性

Java三大特性想必大家都不陌生:封裝、繼承以及多型。很多剛接觸Java的小夥伴都會想,它們到底有什麼了不得之處,又賦予Java這門程式語言什麼魔力呢?今天我們來探討一下吧~~

首先,名詞解釋:

封裝,即是隱藏一切可隱藏的東西,對外界只提供最簡單的程式設計介面。比如,在一個類中,把資料和操作方法繫結起來,對資料的訪問只能通過這些 get/set 方法(又稱為介面)來實現。

為什麼封裝?比如,我是一個廚師,我有一本食譜,你今天想吃肉,讓我幫忙露兩手。具體加了多少鹽,放了多少醋你不需要關心(隱藏具體實現過程),你只管提出需求,我幫你實現(提供服務,即介面)。

繼承,從已有類得到繼承資訊建立新類的過程。提供資訊的叫父類(超類、基類),得到繼承資訊的叫子類(派生類)。既保證了延續性,又能實現可變性。

為什麼繼承?比如,我是一個廚師,廚藝高絕天下,你是我兒子,你自然要得到我的真傳(繼承父類的資訊)。可是,有一天,你說你想去唱去跳去打籃球(實現可變)。兒子長大了,理應去追逐你自己的舞臺,當爹的當然支援你(繼承的優點展露無遺)。

多型:允許不同子型別物件對同一訊息做出不同響應,即,用同樣的物件,呼叫同樣的方法,但是做了不同的事情。分為編譯時多型(如:方法過載,同一個方法實現多個不同的邏輯,並可以在同一個類中實現。其實現的原理是,方法名相同,引數的個數或者型別不同)和執行時多型(如:方法重寫,一個類中不可能兩個定義一樣的方法。因此,重寫就是子類對父類定義的方法重新實現一次)。

為什麼多型?比如,我是一個廚師,今天炒一道番茄雞蛋,以往炒這道菜我會加入小蔥和老薑做配料增香,但是今天小蔥被隔壁老王借走了,那麼我炒菜的時候就沒加蔥(引數個數不同),但這道菜還是番茄炒蛋(編譯時多型);大兒子吃的很不滿意,決定去老李家菜地裡偷點蔥,回來重新炒一個番茄炒蛋,配料雖然齊了,但是火候太大,炒糊了;你也不開心了,心裡想著:你們都不行,讓我來。於是把剩下的蔥都拿去炒菜了,這次火候小了一點,番茄的口感和雞蛋沒有融合在一起,不過本質上和你哥哥炒的一樣都是一道番茄炒蛋(方法重寫)。

好了,Java三大特性就總結到這,如果有人跟你抬槓,說Java不是應該有四大特性麼?你千萬不要覺得人家是在為難你胖虎,因為,抽象也能算半個,只是平常淡出了大家的視線。

那麼,什麼是抽象呢?抽象就是將一類物件的共同特徵總結出來,然後去構造類的過程(人類,特徵?不詳!)。包括資料抽象(手,足等??)和行為抽象(吃飯、睡覺)兩方面,而抽象只關注物件有哪些屬性和行為,並不關注這些行為的細節是什麼(只需要關注人類有吃飯這個屬性即可,不需要關注用左手還是右手)。

談完人類,心裡面大約會有一丟丟小疑問,人的資料抽象是手足等特徵麼,那麼缺失了手足的殘疾人士就不屬於人類了麼?我覺得這個問題非常棒,首先,一個人的本質特徵一定不是手足五官等外在形態。這時候就會有小夥伴來抬槓了:啥意思,你見到一個人,不是憑藉外貌來辨別他們的麼?對的,我們熟悉一個人,很多時候都會從外貌、聲音等明顯特徵來識別,但若是他們戴著網路的面具,而且也沒有和你說話,那麼你是如何判斷這究竟是不是我們熟悉的那個人呢?

所以,大家認為,人類的資料抽象到底是什麼