大千世界,無所不有。這世上不光有人類世界,還有我們的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
完你仍是一條單身狗。對象依然是類的對象,用來調用方法和成員變量滴。
一個建立對象的例子:
基本上每一個類都至少有一個構造方法,除了匿名內部類,若是一個類沒有編寫任何一個構造方法,那麼類就會自帶一個空參構造。若是還有一個有參構造,那麼在建立對象的時候就能直接初始化值,那叫一個方便啊。
構造方法示例:
類長大了也該結婚生子了,類的小孩就叫子類,這名字通俗易懂吧。子類能夠經過
extends
繼承父類的方法和屬性,就好像人類當中子女能夠繼承父母的財產同樣。有些子類比較獨立,不甘平庸,這時候他們就本身增長了一些屬性和方法,更厲害的子類不只自創方法,並且還能將父類的方法進行改良變得更增強大,也就是方法的重寫。
繼承與方法重寫的例子:
不過呢,父類的構造方法子類不能繼承,子類只能經過super關鍵字調用父類構造方法。就比如父親有一套房子,可是父親還要繼續住,不能給兒子,就給了兒子一把鑰匙,兒子也能夠常常回來住。
在咱們
java中,一個子類只能繼承一個父類,這一點和人類同樣,一個兒子只有一個親爹。啥?你問我能不能有乾爹? 那固然能夠有了,接口就是子類的乾爹,並且一個子類能夠有多個接口,子類名
implements
接口名,接口名就能實現多個接口了
有一種保密叫封裝,封裝能夠將該類的某些信息隱藏在類的內部,除了本類不容許其餘類直接訪問,畢竟誰都有個小祕密是不想讓人知道的。
那麼怎麼封裝呢?簡單,只須要在屬性最前面加上private就好了。
封裝屬性示例:
若是想要修改和查看封裝後的屬性,那就須要經過get(),set()方法了。
不是特別重要的數據就可使用protected修飾,這樣子類還能在不一樣包中訪問,還有兩張訪問權限修飾符是public和default(默認不寫),public比較熱情好客,誰都能訪問他。
四種權限修飾符:
封裝能夠隱藏實現細節,就比如人類有一臺電視機,人類只須要知道怎麼使用,並不用瞭解電視機構成元件;並且還挺安全的,由於別人看不到啊,哈哈哈!
有一種照騙叫作多態,舉個栗子吧:據說最近人類挺流行網戀的,然而沒有線下見面誰也不知道手機那一端的人長啥樣啊,視頻又太模糊了看不清,因而照騙出現了,人類將照片ps的美美噠,大臉盤變成瓜子臉,小眼睛變大眼睛,各類美白磨皮,而後再把照片發給對方來吸引對方,終於關係進一步發展到了奔現的程度了,而後就沒有而後了。 這個故事告訴咱們在沒有真正見到對方以前,你永遠也不知道手機另外一端的對方長啥樣。多態也是一個道理,左邊一個樣,右邊又是一個樣。
多態存在有3個必要條件:1.要有繼承 2.要有方法重寫 3.父類引用指向子類對象
多態又分兩種形式,一種是向上轉型,格式是:父類名 父類對象 = new 子類名(); 向上轉型對象不能使用子類新增的成員變量和方法;
還有一種是向下轉型,格式是:子類名 子類對象= (父類名) 父類對象;
向下轉型對象既能調用父類方法也能調用子類自己的方法和屬性。
對此我有一個口訣分享給你們:(適用於向上轉型)
多態的成員變量和方法:編譯看左邊(父類),運行看右邊(子類);
多態的成員方法: 編譯看左邊(父類),運行看右邊(子類)
進行向下轉型
時必定要先來個向上轉型,否則就會出現類型轉換異常
---
ClassCastException
。
多態的例子:
你們都知道梵高吧,人類當中有名的抽象派畫家,巧了,咱java
家族裏也有一種類叫作抽象類。抽象類是一爲嚴厲的父類,他的抽象方法沒有方法體,他爲子類提供了一個通用模板,能夠避免子類設計的隨意性,子類必須重寫抽象父類的方法。
抽象方法和抽象類都必須用abstract
來修飾,並且抽象類也能夠沒有抽象方法。
抽象類的例子:
提到抽象方法就不得再也不說一下接口了,接口中全部方法都是抽象的,全部變量都默認使用public static final修飾,也就是說接口中的變量就是靜態常量了,值不能被修改了。
接口的例子:
最後再給你們安利個美好的畫面,人類流傳着睡美人的故事,公主碰到紡錘讓詛咒生效,並在城堡裏一直昏睡等待王子的親吻將她喚醒。而咱們java
世界中就常常有這麼一幅畫面:
有一種紡錘叫wait(),有一種吻叫notify()。
有一位美麗的線程公主,她趕上了wait(),除非有王子吻醒她,不然她將一直處於昏睡狀態,不久線程王子出現了,王子帶着notify()將公主喚醒了。今後公主和王子就在一塊兒過着幸福美好的生活了。
怎麼樣?看了這麼多,以爲咱java
世界至關有趣吧,是否是還想繼續深刻探索呀?
本文來源:上海尚學堂,逗逼碼農-當你老了:
https://www.shsxt.com/it/java/1258.html
這是尚學堂學員原創文章,感謝尚學堂親愛的學員,你真是程序員界裏的韓寒。轉載請註明出處。html