程序員心中都有一個江湖,java世界,就是一個江湖

大千世界,無所不有。這世上不光有人類世界,還有咱們的 java 世界。今天就由我這個實習導遊帶領你們瞭解瞭解咱們的 java 世界的奇妙之處。

有一種暖男叫 catch,有一種真愛叫 try---catch,世上最真情的愛戀就是你在 try 我在 catch,無論你發什麼脾氣,我都靜靜的接受,默默地處理,不管你有什麼錯,我都會原諒你,愛著你。

有一種懶漢員工叫 throws,甭管有啥事都往外拋,做錯事了就交給上級擦屁股,上級不會再給上級,給到老闆為止,老闆也不會那就 gg 了,倒閉吧。

程序員心中都有一個江湖,java世界,就是一個江湖

有一種聽話員工叫循環,你讓他做幾遍工作他就做幾遍,讓他不睡覺一直加班他還就真 敢做,沒有老闆 break 的允許是斷然不敢停下的。

有一種霸道總裁叫 finally,只要他想做的事就必須要做到,就算是 return 想要阻擋都不行,除非死亡,否則他會不顧一切去得到他的獵物。

有一種垃圾回收站叫 finallize,他和我們的霸道總裁 finally 的名字非常相似,但是千萬不能叫錯了,不然後果很嚴重的。重要的事情說三遍,不能叫錯,不能叫錯,千萬不能叫錯!

有一種江湖叫類,江湖裡有了人就叫對象,人有了技能就叫方法。

有一本取名法典叫做標識符,專門用來給類,方法和變量取名字的,法典裡規定了必須 以字母,下劃線 _ 或者美元$符號為開頭才行,而且對大小寫還相當敏感,並且絕對不能是關鍵字,像 class,catch 那種是萬萬不能用來取名的。

法典裡有一種取名規則叫駝峰規則,給方法和變量取名的時候第一個單詞必須小寫,第 二個、第三個單詞首字母大寫,此乃駝峰規則。當然了,如果是給類取名的話,那就是每個 單詞的首字母都得大寫,別問我為什麼,就是這麼牛。

程序員心中都有一個江湖,java世界,就是一個江湖

看到這裡可能會有一些人有疑惑了,什麼是變量呢? 彆著急,我來告訴你。

變量有三兄弟,分為老大靜態變量,老二成員變量和老三局部變量。

老大呢,比較無私,把自己給共享出去了;老二比較頑皮,混跡於江湖,常在類與方法 中自由出入;至於老三嘛,乖乖仔一個,喜歡和方法在一起玩耍,當方法消失了,老三也會 跟著方法一起殉葬。

那你們知道為什麼老大這麼無私嗎,因為老大被共享掌門人 static 所影響了,但凡聽過 static 講課的變量都會被其所影響,願意將自己共享出去。

這個 static 可是擁有一個很龐大的靜態家族體系,有靜態代碼塊,優先於普通代碼塊先執行;靜態內部類,可以直接被外部類調用;靜態方法,不需要對象就可以被該類調用。

Static 家族都是隨著類的加載而加載,優先於對象存在的。所以在 static 方法中不能使用 this 關鍵字,為什麼呢?因為 this 代表當前對象的一個引用,簡而言之就是 static 出現的時候 this 還沒出生呢,所以 this 就不能在 static 方法中使用。

有一個老頑固叫 final,被 final 認定的事物就不能改變了,誰敢亂動跟誰急,小夥伴們都怕他,尤其是類,遇上 final 就要被結紮,從此不再有子類。真是一個讓人悲傷流淚的故事。變量遇上他,從此不再長身高。方法遇上他,從此不再被子類重寫。所以呢,對於那 些不想再對自我進行改變的方法,變量就可以去找 final 了。

程序員心中都有一個江湖,java世界,就是一個江湖

有一種思想叫做萬物皆對象!對象怎麼來的呢?在程序員爸爸眼中那就是 new 一個就有了。看到這是不是有個大膽的想法,是不是想到了自己還是一條單身狗,迫切的給自己 new 一個對象出來呀。大膽的 new 吧,騷年,new 完你還是一條單身狗。對象依然是類的對象, 用來調用方法和成員變量滴。

一個創建對象的例子:基本上每個類都至少有一個構造方法,除了匿名內部類,如果一個類沒有編寫任何一個 構造方法,那麼類就會自帶一個空參構造。如果還有一個有參構造,那麼在創建對象的時候 就能直接初始化值,那叫一個方便啊。

類長大了也該結婚生子了,類的小孩就叫子類,這名字通俗易懂吧。子類可以通過extends 繼承父類的方法和屬性,就好像人類當中子女可以繼承父母的財產一樣。有些子類比較獨立,不甘平庸,這時候他們就自己增加了一些屬性和方法,更厲害的子類不僅自創方 法,而且還能將父類的方法進行改良變得更加強大,也就是方法的重寫。

繼承與方法重寫的例子:

不過呢,父類的構造方法子類不能繼承,子類只能通過 super 關鍵字調用父類構造方法。就好比父親有一套房子,但是父親還要繼續住,不能給兒子,就給了兒子一把鑰匙,兒子也可以經常回來住。

在我們 java 中,一個子類只能繼承一個父類,這一點和人類一樣,一個兒子只有一個親爹。啥?你問我能不能有乾爹? 那當然可以有了,接口就是子類的乾爹,而且一個子類可以有多個接口,子類名 implements 接口名,接口名就能實現多個接口了。

有一種保密叫封裝,封裝可以將該類的某些信息隱藏在類的內部,除了本類不允許其他 類直接訪問,畢竟誰都有個小秘密是不想讓人知道的。

程序員心中都有一個江湖,java世界,就是一個江湖

那麼怎麼封裝呢?簡單,只需要在屬性最前面加上 private 就行了。

如果想要修改和查看封裝後的屬性,那就需要通過 get(),set()方法了。不是特別重要的數據就可以使用 protected 修飾,這樣子類還能在不同包中訪問,還有兩張訪問權限修飾符是 public 和 default(默認不寫),public 比較熱情好客,誰都能訪問他。

四種權限修飾符:封裝可以隱藏實現細節,就好比人類有一臺電視機,人類只需要知道怎麼使用,並不用 瞭解電視機構成元件;而且還挺安全的,因為別人看不到啊,哈哈哈!

有一種照騙叫做多態,舉個栗子吧:聽說最近人類挺流行網戀的,然而沒有線下見面誰 也不知道手機那一端的人長啥樣啊,視頻又太模糊了看不清,於是照騙出現了,人類將照片 ps 的美美噠,大臉盤變成瓜子臉,小眼睛變大眼睛,各種美白磨皮,然後再把照片發給對方來吸引對方,終於關係進一步發展到了奔現的程度了,然後就沒有然後了。 這個故事告訴我們在沒有真正見到對方之前,你永遠也不知道手機另一端的對方長啥樣。多態也是一個 道理,左邊一個樣,右邊又是一個樣。

多態存在有 3 個必要條件:1.要有繼承 2.要有方法重寫 3.父類引用指向子類對象

多態又分兩種形式,一種是向上轉型,格式是:父類名 父類對象 = new 子類名(); 向上轉型對象不能使用子類新增的成員變量和方法;

還有一種是向下轉型,格式是:子類名 子類對象= (父類名) 父類對象; 向下轉型對象既能調用父類方法也能調用子類本身的方法和屬性。

對此我有一個口訣分享給大家:(適用於向上轉型)

多態的成員變量和方法:編譯看左邊(父類),運行看右邊(子類); 多態的成員方法:編譯看左邊(父類),運行看右邊(子類);

進 行 向 下 轉 型 時 一 定 要 先 來 個 向 上 轉 型 , 不 然 就 會 出 現 類 型 轉 換 異ClassCastException。

程序員心中都有一個江湖,java世界,就是一個江湖

多態的例子:

大家都知道梵高吧,人類當中有名的抽象派畫家,巧了,咱 java 家族裡也有一種類叫做抽象類。抽象類是一為嚴厲的父類,他的抽象方法沒有方法體,他為子類提供了一個通用 模板,可以避免子類設計的隨意性,子類必須重寫抽象父類的方法。

抽象方法和抽象類都必須用 abstract 來修飾,而且抽象類也可以沒有抽象方法。抽象類的例子:

提到抽象方法就不得不再說一下接口了,接口中所有方法都是抽象的,所有變量都默認使用 public static final 修飾,也就是說接口中的變量就是靜態常量了,值不能被修改了。

接口的例子:

最後再給大家安利個美好的畫面,人類流傳著睡美人的故事,公主碰到紡錘讓詛咒生效, 並在城堡裡一直昏睡等待王子的親吻將她喚醒。而我們 java 世界中就經常有這麼一幅畫面:有一種紡錘叫 wait(),有一種吻叫 notify()。

有一位美麗的線程公主,她遇上了 wait(),除非有王子吻醒她,否則她將一直處於昏睡狀態,不久線程王子出現了,王子帶著 notify()將公主喚醒了。從此公主和王子就在一起過著幸福美好的生活了。

怎麼樣?看了這麼多,覺得咱 java 世界相當有趣吧,是不是還想繼續深入探索呀?


分享到:


相關文章: