程序員心中都有一個江湖铃彰,java世界,就是一個江湖芯咧!
大千世界牙捉,無所不有。這世上不光有人類世界敬飒,還有咱們的 java 世界邪铲。今天就由我這個實習導游帶領你們了解了解咱們的 java 世界的奇妙之處。
有一種暖男叫 catch无拗,有一種真愛叫 try---catch霜浴,世上最真情的愛戀就是你在 try 我在 catch,無論你發(fā)什么脾氣蓝纲,我都靜靜的接受,默默地處理晌纫,不管你有什么錯税迷,我都會原諒你,愛著你锹漱。
有一種懶漢員工叫 throws箭养,甭管有啥事都往外拋,做錯事了就交給上級擦屁股哥牍,上級不會再給上級毕泌,給到老板為止,老板也不會那就 gg 了嗅辣,倒閉吧撼泛。
有一種聽話員工叫循環(huán),你讓他做幾遍工作他就做幾遍澡谭,讓他不睡覺一直加班他還就真 敢做愿题,沒有老板 break 的允許是斷然不敢停下的。
有一種霸道總裁叫 finally蛙奖,只要他想做的事就必須要做到潘酗,就算是 return 想要阻擋都不行,除非死亡雁仲,否則他會不顧一切去得到他的獵物仔夺。
有一種垃圾回收站叫 finallize,他和我們的霸道總裁 finally 的名字非常相似攒砖,但是千萬不能叫錯了缸兔,不然后果很嚴重的日裙。重要的事情說三遍,不能叫錯灶体,不能叫錯阅签,千萬不能叫錯!
有一種江湖叫類蝎抽,江湖里有了人就叫對象政钟,人有了技能就叫方法。
有一本取名法典叫做標識符樟结,專門用來給類养交,方法和變量取名字的,法典里規(guī)定了必須 以字母瓢宦,下劃線 _ 或者美元$符號為開頭才行,而且對大小寫還相當敏感碎连,并且絕對不能是關鍵字,像 class驮履,catch 那種是萬萬不能用來取名的鱼辙。
法典里有一種取名規(guī)則叫駝峰規(guī)則,給方法和變量取名的時候第一個單詞必須小寫玫镐,第 二個倒戏、第三個單詞首字母大寫,此乃駝峰規(guī)則恐似。當然了杜跷,如果是給類取名的話,那就是每個 單詞的首字母都得大寫矫夷,別問我為什么葛闷,就是這么牛。
看到這里可能會有一些人有疑惑了双藕,什么是變量呢淑趾? 別著急,我來告訴你忧陪。
變量有三兄弟治笨,分為老大靜態(tài)變量链患,老二成員變量和老三局部變量肉康。
老大呢,比較無私泣崩,把自己給共享出去了更卒;老二比較頑皮等孵,混跡于江湖,常在類與方法 中自由出入蹂空;至于老三嘛俯萌,乖乖仔一個果录,喜歡和方法在一起玩耍,當方法消失了咐熙,老三也會 跟著方法一起殉葬弱恒。
那你們知道為什么老大這么無私嗎,因為老大被共享掌門人 static 所影響了棋恼,但凡聽過 static 講課的變量都會被其所影響返弹,愿意將自己共享出去。
這個 static 可是擁有一個很龐大的靜態(tài)家族體系爪飘,有靜態(tài)代碼塊义起,優(yōu)先于普通代碼塊先執(zhí)行;靜態(tài)內(nèi)部類师崎,可以直接被外部類調(diào)用默终;靜態(tài)方法,不需要對象就可以被該類調(diào)用犁罩。
Static 家族都是隨著類的加載而加載齐蔽,優(yōu)先于對象存在的。所以在 static 方法中不能使用 this 關鍵字床估,為什么呢肴熏?因為 this 代表當前對象的一個引用,簡而言之就是 static 出現(xiàn)的時候 this 還沒出生呢顷窒,所以 this 就不能在 static 方法中使用。
有一個老頑固叫 final源哩,被 final 認定的事物就不能改變了鞋吉,誰敢亂動跟誰急,小伙伴們都怕他励烦,尤其是類谓着,遇上 final 就要被結扎,從此不再有子類坛掠。真是一個讓人悲傷流淚的故事赊锚。變量遇上他,從此不再長身高屉栓。方法遇上他舷蒲,從此不再被子類重寫。所以呢友多,對于那 些不想再對自我進行改變的方法牲平,變量就可以去找 final 了。
有一種思想叫做萬物皆對象域滥!對象怎么來的呢纵柿?在程序員爸爸眼中那就是 new 一個就有了蜈抓。看到這是不是有個大膽的想法昂儒,是不是想到了自己還是一條單身狗沟使,迫切的給自己 new 一個對象出來呀。大膽的 new 吧渊跋,騷年腊嗡,new 完你還是一條單身狗。對象依然是類的對象刹枉, 用來調(diào)用方法和成員變量滴叽唱。
一個創(chuàng)建對象的例子:基本上每個類都至少有一個構造方法,除了匿名內(nèi)部類微宝,如果一個類沒有編寫任何一個 構造方法棺亭,那么類就會自帶一個空參構造。如果還有一個有參構造蟋软,那么在創(chuàng)建對象的時候 就能直接初始化值镶摘,那叫一個方便啊。
類長大了也該結婚生子了岳守,類的小孩就叫子類凄敢,這名字通俗易懂吧。子類可以通過extends 繼承父類的方法和屬性湿痢,就好像人類當中子女可以繼承父母的財產(chǎn)一樣涝缝。有些子類比較獨立,不甘平庸譬重,這時候他們就自己增加了一些屬性和方法拒逮,更厲害的子類不僅自創(chuàng)方 法,而且還能將父類的方法進行改良變得更加強大臀规,也就是方法的重寫滩援。
繼承與方法重寫的例子:
不過呢,父類的構造方法子類不能繼承塔嬉,子類只能通過 super 關鍵字調(diào)用父類構造方法玩徊。就好比父親有一套房子,但是父親還要繼續(xù)住谨究,不能給兒子恩袱,就給了兒子一把鑰匙,兒子也可以經(jīng)辰赫埽回來住憎蛤。
在我們 java 中,一個子類只能繼承一個父類,這一點和人類一樣俩檬,一個兒子只有一個親爹萎胰。啥?你問我能不能有干爹棚辽? 那當然可以有了技竟,接口就是子類的干爹,而且一個子類可以有多個接口屈藐,子類名 implements 接口名榔组,接口名就能實現(xiàn)多個接口了。
有一種保密叫封裝联逻,封裝可以將該類的某些信息隱藏在類的內(nèi)部搓扯,除了本類不允許其他 類直接訪問,畢竟誰都有個小秘密是不想讓人知道的包归。
那么怎么封裝呢锨推?簡單,只需要在屬性最前面加上 private 就行了公壤。
如果想要修改和查看封裝后的屬性换可,那就需要通過 get(),set()方法了厦幅。不是特別重要的數(shù)據(jù)就可以使用 protected 修飾沾鳄,這樣子類還能在不同包中訪問,還有兩張訪問權限修飾符是 public 和 default(默認不寫)确憨,public 比較熱情好客译荞,誰都能訪問他。
四種權限修飾符:封裝可以隱藏實現(xiàn)細節(jié)休弃,就好比人類有一臺電視機吞歼,人類只需要知道怎么使用,并不用 了解電視機構成元件玫芦;而且還挺安全的,因為別人看不到啊本辐,哈哈哈桥帆!
有一種照騙叫做多態(tài),舉個栗子吧:聽說最近人類挺流行網(wǎng)戀的慎皱,然而沒有線下見面誰 也不知道手機那一端的人長啥樣啊老虫,視頻又太模糊了看不清,于是照騙出現(xiàn)了祈匙,人類將照片 ps 的美美噠,大臉盤變成瓜子臉,小眼睛變大眼睛夺欲,各種美白磨皮跪帝,然后再把照片發(fā)給對方來吸引對方,終于關系進一步發(fā)展到了奔現(xiàn)的程度了些阅,然后就沒有然后了伞剑。 這個故事告訴我們在沒有真正見到對方之前,你永遠也不知道手機另一端的對方長啥樣市埋。多態(tài)也是一個 道理黎泣,左邊一個樣,右邊又是一個樣缤谎。
多態(tài)存在有 3 個必要條件:1.要有繼承 2.要有方法重寫 3.父類引用指向子類對象
多態(tài)又分兩種形式抒倚,一種是向上轉型,格式是:父類名 父類對象 = new 子類名(); 向上轉型對象不能使用子類新增的成員變量和方法坷澡;
還有一種是向下轉型托呕,格式是:子類名 子類對象= (父類名) 父類對象; 向下轉型對象既能調(diào)用父類方法也能調(diào)用子類本身的方法和屬性。
對此我有一個口訣分享給大家:(適用于向上轉型)
多態(tài)的成員變量和方法:編譯看左邊(父類)洋访,運行看右邊(子類)镣陕; 多態(tài)的成員方法:編譯看左邊(父類),運行看右邊(子類)姻政;
進 行 向 下 轉 型 時 一 定 要 先 來 個 向 上 轉 型 呆抑, 不 然 就 會 出 現(xiàn) 類 型 轉 換 異ClassCastException。
多態(tài)的例子:
大家都知道梵高吧汁展,人類當中有名的抽象派畫家鹊碍,巧了,咱 java 家族里也有一種類叫做抽象類食绿。抽象類是一為嚴厲的父類侈咕,他的抽象方法沒有方法體,他為子類提供了一個通用 模板器紧,可以避免子類設計的隨意性耀销,子類必須重寫抽象父類的方法。
抽象方法和抽象類都必須用 abstract 來修飾铲汪,而且抽象類也可以沒有抽象方法熊尉。抽象類的例子:
提到抽象方法就不得不再說一下接口了,接口中所有方法都是抽象的掌腰,所有變量都默認使用 public static final 修飾狰住,也就是說接口中的變量就是靜態(tài)常量了,值不能被修改了齿梁。
接口的例子:
最后再給大家安利個美好的畫面催植,人類流傳著睡美人的故事肮蛹,公主碰到紡錘讓詛咒生效, 并在城堡里一直昏睡等待王子的親吻將她喚醒创南。而我們 java 世界中就經(jīng)常有這么一幅畫面:有一種紡錘叫 wait()伦忠,有一種吻叫 notify()。
有一位美麗的線程公主扰藕,她遇上了 wait()缓苛,除非有王子吻醒她,否則她將一直處于昏睡狀態(tài)邓深,不久線程王子出現(xiàn)了未桥,王子帶著 notify()將公主喚醒了。從此公主和王子就在一起過著幸福美好的生活了芥备。
怎么樣冬耿?看了這么多,覺得咱 java 世界相當有趣吧萌壳,是不是還想繼續(xù)深入探索呀亦镶?
點擊鏈接加入群聊:https://jq.qq.com/?_wv=1027&k=5vJHRcT
燭光學院騰訊課堂免費公開課地址:
https://ke.qq.com/course/260263?flowToken=1007019
本群提供免費的學習指導 架構資料 以及免費的解答
不懂得問題都可以在本群提出來 之后還會有職業(yè)生涯規(guī)劃以及面試指導