原來Java世界裡也有這麼多精彩的故事,學java真的很有趣

大千世界,無所不有。這世上不光有人類世界,還有咱們的java世界。

今天就由我帶領你們瞭解瞭解咱們的java世界奇妙之處。

一、有一種...

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

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

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

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

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

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

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

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

看到這裡可能會有一些人有疑惑了,什麼是變量呢?

彆著急,我來告訴你。

二、變量

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

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

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

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

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

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

三、萬物皆對象

有一種思想叫做萬物皆對象!

對象怎麼來的呢?在程序員爸爸眼中那就是new一個就有了。

看到這是不是有個大膽的想法,是不是想到了自己還是一條單身狗,迫切的給自己new一個對象出來呀。大膽的new吧,騷年,new完你還是一條單身狗。對象依然是類的對象,用來調用方法和成員變量滴。

一個創建對象的例子:

原來Java世界裡也有這麼多精彩的故事,學java真的很有趣

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

構造方法示例:

原來Java世界裡也有這麼多精彩的故事,學java真的很有趣

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

繼承與方法重寫的例子:

原來Java世界裡也有這麼多精彩的故事,學java真的很有趣

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

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

四、封裝

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

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

封裝屬性示例:

原來Java世界裡也有這麼多精彩的故事,學java真的很有趣

如果想要修改和查看封裝後的屬性,那就需要通過get(),set()方法了。

不是特別重要的數據就可以使用protected修飾,這樣子類還能在不同包中訪問,還有兩張訪問權限修飾符是public和default(默認不寫),public比較熱情好客,誰都能訪問他。

四種權限修飾符:

原來Java世界裡也有這麼多精彩的故事,學java真的很有趣

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

五、多態

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

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

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

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

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

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

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

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

多態的例子:

原來Java世界裡也有這麼多精彩的故事,學java真的很有趣

六、抽象類

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

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

抽象類的例子:

原來Java世界裡也有這麼多精彩的故事,學java真的很有趣

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

接口的例子:

原來Java世界裡也有這麼多精彩的故事,學java真的很有趣

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

七、線程

有一種紡錘叫wait(),有一種吻叫notify()。

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

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

JAVA推薦但不強迫:


分享到:


相關文章: