Java 匿名函數(shù)信姓、構(gòu)造方法鸵隧、構(gòu)造代碼塊、方法重載與方法重寫(xiě)

匿名函數(shù)

Java Lambda 表達(dá)式(又名閉包(Closure)/匿名函數(shù))

構(gòu)造方法

構(gòu)造方法的作用:給對(duì)象進(jìn)行初始化财破,對(duì)象創(chuàng)建時(shí)初始化屬性值

創(chuàng)建構(gòu)造方法

  • 構(gòu)造方法沒(méi)有返回類(lèi)型掰派,方法名和類(lèi)名保持一致
  • 構(gòu)造方法不是我們手動(dòng)調(diào)用的从诲,是對(duì)象被創(chuàng)建的時(shí)候jvm(java虛擬機(jī))調(diào)用的
  • 如果一個(gè)類(lèi)我們沒(méi)有給它定義構(gòu)造方法左痢,jvm(java虛擬機(jī))在編譯的時(shí)候 會(huì)給這個(gè)類(lèi)默認(rèn)添加一個(gè)無(wú)參構(gòu)造方法
  • 如果自己定義了構(gòu)造方法,那么jvm不會(huì)再創(chuàng)建無(wú)參構(gòu)造方法
  • 創(chuàng)建對(duì)象的時(shí)候系洛,有幾個(gè)參數(shù)俊性,就要有相應(yīng)的構(gòu)造方法,也是對(duì)應(yīng)的要有幾個(gè)參數(shù)

格式

  • 修飾符 類(lèi)名(參數(shù)列表){}
  • 直接類(lèi)名 (參數(shù)列表){}

方法重載

方法是可以重名的描扯,我們把這種重名的方法叫 方法的重載

注意

  • 方法名一樣才叫方法重載
  • 任何方法(普通方法定页,構(gòu)造方法)都可以實(shí)現(xiàn)方法重載
  • 參數(shù)列表要保證順序 或者 個(gè)數(shù)是不一樣的
    例如:
  • Person (String a , int b);
  • Person ( int b, String a);//順序不一樣
  • Person (String a , int b,String c);//個(gè)數(shù)不一樣

方法重寫(xiě)

Java程序中绽诚,類(lèi)的繼承關(guān)系可以產(chǎn)生一個(gè)子類(lèi)典徊,子類(lèi)繼承父類(lèi),它具備了父類(lèi)所有的特征恩够,繼承了父類(lèi)所有的方法和變量卒落。子類(lèi)可以定義新的特征,當(dāng)子類(lèi)需要修改父類(lèi)的一些方法進(jìn)行擴(kuò)展蜂桶,增大功能儡毕,程序設(shè)計(jì)者常常把這樣的一種操作方法稱(chēng)為重寫(xiě),也叫稱(chēng)為覆寫(xiě)覆蓋扑媚。

在重寫(xiě)方法時(shí)腰湾,需要遵循以下的規(guī)則:

  • 父類(lèi)方法的參數(shù)列表必須完全與被子類(lèi)重寫(xiě)的方法的參數(shù)列表相同雷恃,否則不能稱(chēng)其為重寫(xiě)而是重載
  • 父類(lèi)的返回類(lèi)型必須與被子類(lèi)重寫(xiě)的方法返回類(lèi)型相同,否則不能稱(chēng)其為重寫(xiě)而是重載
  • Java中規(guī)定费坊,被子類(lèi)重寫(xiě)的方法不能擁有比父類(lèi)方法更加嚴(yán)格的訪(fǎng)問(wèn)權(quán)限
  • 由于父類(lèi)的訪(fǎng)問(wèn)權(quán)限修飾符的限制一定要大于被子類(lèi)重寫(xiě)方法的訪(fǎng)問(wèn)權(quán)限修飾符倒槐,而private權(quán)限最小。所以如果某一個(gè)方法在父類(lèi)中的訪(fǎng)問(wèn)權(quán)限是private附井,那么就不能在子類(lèi)中對(duì)其進(jìn)行重寫(xiě)
  • 在繼承過(guò)程中如果父類(lèi)當(dāng)中的方法拋出異常导犹,那么在子類(lèi)中重寫(xiě)父類(lèi)的該方法時(shí),也要拋出異常羡忘,而且拋出的異常不能多于父類(lèi)中拋出的異常(可以等于父類(lèi)中拋出的異常)

例如:父類(lèi)的一個(gè)方法申明了一個(gè)檢查異常IOException谎痢,在重寫(xiě)這個(gè)方法時(shí)就不能拋出Exception,只能拋出IOException的子類(lèi)異常卷雕,可以?huà)伋龇菣z查異常

方法重寫(xiě)與方法重載的區(qū)別

區(qū)別點(diǎn) 方法重載 方法重寫(xiě)(覆蓋)
英文 Overloading Overiding
定義 方法名稱(chēng)相同节猿,參數(shù)的類(lèi)型或個(gè)數(shù)不同 方法名稱(chēng)、參數(shù)類(lèi)型漫雕、返回值類(lèi)型全部相同
定義 對(duì)權(quán)限沒(méi)有要求 被重寫(xiě)的方法不能擁有更嚴(yán)格的權(quán)限
范圍 發(fā)生在一個(gè)類(lèi)中 發(fā)生在繼承類(lèi)中

構(gòu)造代碼塊

構(gòu)造代碼塊作用:給對(duì)象統(tǒng)一初始化滨嘱。(對(duì)象創(chuàng)建之前都會(huì)走這個(gè)方法)

注意

  • 構(gòu)造代碼塊必須寫(xiě)在成員變量(屬性)的位置
  • 對(duì)象創(chuàng)建之前都會(huì)走這個(gè)方法
  • java中編譯器編譯java源文件的時(shí)候,會(huì)把成員變量的聲明放到最前面
  • 成員變量的初始化都是在構(gòu)造方法中執(zhí)行的浸间,一旦經(jīng)過(guò)java編譯器編譯太雨,構(gòu)造代碼塊的方法會(huì)移到構(gòu)造函數(shù)中執(zhí)行,放在構(gòu)造函數(shù)的最前面執(zhí)行
  • 如果沒(méi)有構(gòu)造方法魁蒜,只有成員變量初始化和構(gòu)造代碼塊囊扳,按照當(dāng)前代碼的順序來(lái)執(zhí)行

代碼塊分為三類(lèi):

  • 構(gòu)造代碼塊 : {...}
  • 局部代碼塊:寫(xiě)在方法中,也是以大括號(hào)來(lái)表示
  • 靜態(tài)代碼塊:static{...}

參考代碼:

User.java

package com.DesignPattern.test;

/**
 * Created by shun_c on 2017/7/3.
 */
public class User {

    public String name;
    public static int age;

    {
        age = 21;
        System.out.println("user in 構(gòu)造代碼塊 前 " + age);
    }

    static {
        age = 111;
        System.out.println("user in 靜態(tài)代碼塊 " + age);
    }

    public User(){
        age = 31;
        System.out.println("user in 構(gòu)造方法 " + age);
    }

    public void use(){
        age = 41;
        System.out.println("user in use 方法 " + age);
    }

    public static void main(String [] args){

        User user = new User();
        user.age = 51;
        System.out.println("user in main " + user.age);
        user.use();
    }

    {
        age = 61;
        System.out.println("user in 構(gòu)造代碼塊 后 " + age);
    }
}

Student.java

package com.DesignPattern.test;

/**
 * Created by shun_c on 2017/7/3.
 */
public class Student extends User {

    {
        age = 71;
        System.out.println("student in 構(gòu)造代碼塊 前 " + age);
    }

    static {
        age = 121;
        System.out.println("student in 靜態(tài)代碼塊 " + age);
    }

    public Student(){
        age = 81;
        System.out.println("student in 構(gòu)造方法 " + age);
    }

    public void use(){
        age = 91;
        System.out.println("student in use 方法 " + age);
    }

    {
        age = 101;
        System.out.println("student in 構(gòu)造代碼塊 后 " + age);
    }

    public static void main(String [] args){
        Student student = new Student();
        System.out.println("student in main " + student.age);
        student.use();
    }
}

run : User.java

運(yùn)行User.jpg

run : Student.java

運(yùn)行Student.jpg
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末兜看,一起剝皮案震驚了整個(gè)濱河市锥咸,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌细移,老刑警劉巖搏予,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異弧轧,居然都是意外死亡雪侥,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén)精绎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)速缨,“玉大人,你說(shuō)我怎么就攤上這事捺典∧窭” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)引谜。 經(jīng)常有香客問(wèn)我牍陌,道長(zhǎng),這世上最難降的妖魔是什么员咽? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任毒涧,我火速辦了婚禮,結(jié)果婚禮上贝室,老公的妹妹穿的比我還像新娘契讲。我一直安慰自己,他們只是感情好滑频,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布捡偏。 她就那樣靜靜地躺著,像睡著了一般峡迷。 火紅的嫁衣襯著肌膚如雪银伟。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,166評(píng)論 1 284
  • 那天绘搞,我揣著相機(jī)與錄音彤避,去河邊找鬼。 笑死夯辖,一個(gè)胖子當(dāng)著我的面吹牛琉预,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蒿褂,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼圆米,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了贮缅?” 一聲冷哼從身側(cè)響起榨咐,我...
    開(kāi)封第一講書(shū)人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎谴供,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體齿坷,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡桂肌,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了永淌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片崎场。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖遂蛀,靈堂內(nèi)的尸體忽然破棺而出谭跨,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布螃宙,位于F島的核電站蛮瞄,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏谆扎。R本人自食惡果不足惜挂捅,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望堂湖。 院中可真熱鬧闲先,春花似錦、人聲如沸无蜂。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)斥季。三九已至退盯,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間泻肯,已是汗流浹背渊迁。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留灶挟,地道東北人琉朽。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像稚铣,于是被迫代替她去往敵國(guó)和親箱叁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法惕医,類(lèi)相關(guān)的語(yǔ)法耕漱,內(nèi)部類(lèi)的語(yǔ)法,繼承相關(guān)的語(yǔ)法抬伺,異常的語(yǔ)法螟够,線(xiàn)程的語(yǔ)...
    子非魚(yú)_t_閱讀 31,587評(píng)論 18 399
  • 一:java概述:1,JDK:Java Development Kit峡钓,java的開(kāi)發(fā)和運(yùn)行環(huán)境妓笙,java的開(kāi)發(fā)工...
    ZaneInTheSun閱讀 2,629評(píng)論 0 11
  • 總有人說(shuō)——假如有后悔藥該多好寞宫。卻不知正是過(guò)往的經(jīng)歷鑄就了現(xiàn)在的你,路是一步一步走過(guò)來(lái)的拉鹃,無(wú)論此刻的你正在經(jīng)歷什么...
    印子說(shuō)閱讀 359評(píng)論 0 1
  • 投資的剛需是避險(xiǎn) 李笑來(lái) 2016年12月19日 相信你從小到大辈赋,一直被這樣洗腦過(guò)——反正我自己確實(shí)是被這么洗過(guò)的...
    格式化_001閱讀 212評(píng)論 0 0
  • 寫(xiě)點(diǎn)什么呢鲫忍,下班回家,就是忙著做晚飯钥屈,收拾碗筷悟民,稍微的做一下衛(wèi)生,在看一下朋友圈焕蹄,逛一下微博逾雄,一晃就這個(gè)點(diǎn)了。 一...
    纖纖來(lái)了閱讀 164評(píng)論 0 0