Java 重寫 ( Override )

Java 重寫 ( Override )

重寫是子類對(duì)父類的允許訪問(wèn)的方法的實(shí)現(xiàn)過(guò)程進(jìn)行重新編寫, 返回值和形參都不能改變

即外殼不變殿雪,核心重寫

重寫的好處在于子類可以根據(jù)需要,定義特定于自己的行為锋爪,也就是說(shuō)子類能夠根據(jù)需要實(shí)現(xiàn)父類的方法

面向?qū)ο笤瓌t里丙曙,重寫意味著可以重寫任何現(xiàn)有方法

重寫方法不能拋出新的檢查異常或者比被重寫方法申明更加寬泛的異常

例如:父類的一個(gè)方法申明了一個(gè)檢查異常 IOException其骄,但是在重寫這個(gè)方法的時(shí)候不能拋出 Exception 異常亏镰,因?yàn)?Exception 是 IOException 的父類,只能拋出 IOException 的子類異常

class Animal{
   public void move(){
      System.out.println("動(dòng)物可以移動(dòng)");
   }
}

class Dog extends Animal{
   public void move(){
      System.out.println("狗可以跑和走");
   }
}

public class TestDog{
   public static void main(String args[]){
      Animal a = new Animal(); // Animal 對(duì)象
      Animal b = new Dog(); // Dog 對(duì)象

      a.move();// 執(zhí)行 Animal 類的方法

      b.move();//執(zhí)行 Dog 類的方法
   }
}

編譯運(yùn)行以上 Java 代碼拯爽,輸出結(jié)果如下

動(dòng)物可以移動(dòng)
狗可以跑和走

從運(yùn)行的結(jié)果中可以看出索抓,盡管 b 屬于 Animal 類型,但是它運(yùn)行的是 Dog 類的 move 方法

class Animal{
   public void move(){
      System.out.println("動(dòng)物可以移動(dòng)");
   }
}

class Dog extends Animal{
   public void move(){
      System.out.println("狗可以跑和走");
   }
   public void bark(){
      System.out.println("狗可以吠叫");
   }
}

public class TestDog{
   public static void main(String args[]){
      Animal a = new Animal(); // Animal 對(duì)象
      Animal b = new Dog(); // Dog 對(duì)象

      a.move();// 執(zhí)行 Animal 類的方法
      b.move();//執(zhí)行 Dog 類的方法
      b.bark();
   }
}

編譯運(yùn)行以上 Java 代碼,輸出結(jié)果如下

TestDog.java:30: cannot find symbol
symbol : method bark()
location: class Animal
b.bark();
^

該程序?qū)伋鲆粋€(gè)編譯錯(cuò)誤纸兔,因?yàn)?b 的引用類型 Animal 沒(méi)有 bark 方法

方法的重寫規(guī)則

  1. 參數(shù)列表必須完全與被重寫方法的相同
  2. 返回類型必須完全與被重寫方法的返回類型相同
  3. 訪問(wèn)權(quán)限不能比父類中被重寫的方法的訪問(wèn)權(quán)限更低惰瓜。例如:如果父類的一個(gè)方法被聲明為public,那么在子類中重寫該方法就不能聲明為protected
  4. 父類的成員方法只能被它的子類重寫
  5. 聲明為final的方法不能被重寫
  6. 聲明為static的方法不能被重寫汉矿,但是能夠被再次聲明
  7. 子類和父類在同一個(gè)包中崎坊,那么子類可以重寫父類所有方法,除了聲明為private和final的方法
  8. 子類和父類不在同一個(gè)包中洲拇,那么子類只能夠重寫父類的聲明為public和protected的非final方法
  9. 重寫的方法能夠拋出任何非強(qiáng)制異常奈揍,無(wú)論被重寫的方法是否拋出異常。但是赋续,重寫的方法不能拋出新的強(qiáng)制性異常男翰,或者比被重寫方法聲明的更廣泛的強(qiáng)制性異常,反之則可以
  10. 構(gòu)造方法不能被重寫
  11. 如果不能繼承一個(gè)方法纽乱,則不能重寫這個(gè)方法

super 關(guān)鍵字

當(dāng)需要在子類中調(diào)用父類的被重寫方法時(shí)色冀,要使用 super 關(guān)鍵字

class Animal{
   public void move(){
      System.out.println("動(dòng)物可以移動(dòng)");
   }
}

class Dog extends Animal{
   public void move(){
      super.move(); // 應(yīng)用super類的方法
      System.out.println("狗可以跑和走");
   }
}

public class TestDog{
   public static void main(String args[]){

      Animal b = new Dog(); // Dog 對(duì)象
      b.move(); //執(zhí)行 Dog類的方法

   }
}

編譯運(yùn)行以上 Java 代碼涵亏,輸出結(jié)果如下

動(dòng)物可以移動(dòng)
狗可以跑和走

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末似扔,一起剝皮案震驚了整個(gè)濱河市搪花,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌薯嗤,老刑警劉巖顽爹,帶你破解...
    沈念sama閱讀 216,997評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異骆姐,居然都是意外死亡镜粤,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門玻褪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)肉渴,“玉大人,你說(shuō)我怎么就攤上這事归园』剖” “怎么了稚矿?”我有些...
    開封第一講書人閱讀 163,359評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵庸诱,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我晤揣,道長(zhǎng)桥爽,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,309評(píng)論 1 292
  • 正文 為了忘掉前任昧识,我火速辦了婚禮钠四,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己缀去,他們只是感情好侣灶,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評(píng)論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著缕碎,像睡著了一般褥影。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上咏雌,一...
    開封第一講書人閱讀 51,258評(píng)論 1 300
  • 那天凡怎,我揣著相機(jī)與錄音,去河邊找鬼赊抖。 笑死统倒,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的氛雪。 我是一名探鬼主播房匆,決...
    沈念sama閱讀 40,122評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼报亩!你這毒婦竟也來(lái)了坛缕?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,970評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤捆昏,失蹤者是張志新(化名)和其女友劉穎赚楚,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體骗卜,經(jīng)...
    沈念sama閱讀 45,403評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡宠页,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了寇仓。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片举户。...
    茶點(diǎn)故事閱讀 39,769評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖遍烦,靈堂內(nèi)的尸體忽然破棺而出俭嘁,到底是詐尸還是另有隱情,我是刑警寧澤服猪,帶...
    沈念sama閱讀 35,464評(píng)論 5 344
  • 正文 年R本政府宣布供填,位于F島的核電站,受9級(jí)特大地震影響罢猪,放射性物質(zhì)發(fā)生泄漏近她。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評(píng)論 3 327
  • 文/蒙蒙 一膳帕、第九天 我趴在偏房一處隱蔽的房頂上張望粘捎。 院中可真熱鬧,春花似錦、人聲如沸攒磨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)娩缰。三九已至蓬痒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間漆羔,已是汗流浹背梧奢。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留演痒,地道東北人亲轨。 一個(gè)月前我還...
    沈念sama閱讀 47,831評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像鸟顺,于是被迫代替她去往敵國(guó)和親惦蚊。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評(píng)論 2 354

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