JAVA中重寫和重載區(qū)別

重寫和重載區(qū)別

重寫方法的規(guī)則如下:

  1. 參數(shù)列表:必須與被重寫方法的參數(shù)列表完全匹配。
  2. 返回類型:必須與超類中被重寫的方法中聲明的返回類型或子類型完全相同
  3. 訪問級別:一定不能比被重寫方法強喂走,可以比被重寫方法的弱小染。
  4. 非檢查異常:重寫方法可以拋出任何非檢查的異常,無論被重寫方法是否聲明了該異常溉知。
  5. 檢查異常:重寫方法一定不能拋出新的檢查異常,或比被重寫方法聲明的檢查異常更廣的檢查異常
  6. 不能重寫標(biāo)志為final,static的方法

重載方法的規(guī)則:

  1. 參數(shù)列表:被重載的方法必須改變參數(shù)列表。
  2. 返回類型:可以改變返回類型诗芜。
  3. 修飾符:可以改變修飾符
  4. 異常:可以聲明新的或者更廣泛的異常瞳抓。
    class Animal {   
        public void eat(){   
        }   
    }  

以下列出對于Animal的eat方法各種重寫重載實例,根據(jù)以上列出的規(guī)則伏恐,判斷其是否合法(以下的方法都屬于Animal的子類Horse的方法):

  1. private void eat(){} 不能通過編譯孩哑,非法重寫,訪問修飾符限制性變強翠桦;不屬于重載横蜒,因為參數(shù)列表沒有發(fā)生改變
  2. public void eat() throw RuntimeException{} 能通過編譯,屬于重寫销凑,重寫方法可以拋出任何非檢查異常丛晌。
  3. public void eat() throw IOException{} 不能通過編譯,非法重寫斗幼,重寫方法一定不能拋出新的檢查異常澎蛛,或比被重寫方法聲明的檢查異常更廣的檢查異常;不屬于重載蜕窿,參數(shù)列表必須發(fā)生變化才屬于重載
  4. public void eat(String food){} 能通過編譯谋逻,不是重寫;合法重載桐经,因為參數(shù)列表發(fā)生改變了毁兆。
  5. public String eat(){} 不能通過編譯,不是重寫次询,因為其返回類型荧恍;不是重載,因為參數(shù)列表沒有發(fā)生改變屯吊。
  6. public String eat(int n){} 可以通過編譯送巡,不是重寫;是重載盒卸,首先參數(shù)列表必須發(fā)生變化骗爆,返回類型可以發(fā)生改變。

對父類被重寫的方法做一個變動:

    class Animal {   
        public Animal eat() throws IOException{   
            return null;   
        }   
    }
  1. public Animal eat(){return null;} 可以通過編譯蔽介,合法重寫摘投,可以不拋出異常,只要不拋出新的異澈缧睿或更廣泛的異常就可以犀呼。
  2. public Animal eat() throws FileNotFoundException{return null;} 可以通過編譯,是重寫薇组,屬于子類的非檢查異常外臂。
  3. public Animal eat() throws Exception{} 不可以通過編譯,非法重寫律胀,拋出了更廣泛的異常宋光。
  4. public Horse eat() {} 可以通過編譯貌矿,是重寫,因為返回類型可以是被重寫的返回類型的子類罪佳。

重載(Overloading)

  1. 方法重載是讓類以統(tǒng)一的方式處理不同類型數(shù)據(jù)的一種手段逛漫。多個同名函數(shù)同時存在,具有不同的參數(shù)個數(shù)/類型赘艳。重載Overloading是一個類中多態(tài)性的一種表現(xiàn)酌毡。

  2. Java的方法重載,就是在類中可以創(chuàng)建多個方法蕾管,它們具有相同的名字阔馋,但具有不同的參數(shù)和不同的定義。調(diào)用方法時通過傳遞給它們的不同參數(shù)個數(shù)和參數(shù)類型來決定具體使用哪個方法, 這就是多態(tài)性娇掏。、

  3. 重載的時候勋眯,方法名要一樣婴梧,但是參數(shù)類型和個數(shù)不一樣,返回值類型可以相同也可以不相同客蹋。無法以返回型別作為重載函數(shù)的區(qū)分標(biāo)準(zhǔn)塞蹭。

重寫(Overriding)

  1. 父類與子類之間的多態(tài)性,對父類的函數(shù)進行重新定義讶坯。如果在子類中定義某方法與其父類有相同的名稱和參數(shù)番电,我們說該方法被重寫 (Overriding)。在Java中辆琅,子類可繼承父類中的方法漱办,而不需要重新編寫相同的方法。
    但有時子類并不想原封不動地繼承父類的方法婉烟,而是想作一定的修改娩井,這就需要采用方法的重寫。方法重寫又稱方法覆蓋似袁。

  2. 若子類中的方法與父類中的某一方法具有相同的方法名洞辣、返回類型和參數(shù)表,則新方法將覆蓋原有的方法昙衅。如需父類中原有的方法扬霜,可使用super關(guān)鍵字,該關(guān)鍵字引用了當(dāng)前類的父類而涉。

  3. 子類函數(shù)的訪問修飾權(quán)限不能少于父類的著瓶;

總結(jié):重載和重寫(覆蓋)

  • 方法的重寫Overriding和重載Overloading是Java多態(tài)性的不同表現(xiàn)。重寫Overriding是父類與子類之間多態(tài)性的一種表現(xiàn)婴谱,重載Overloading是一個類中多態(tài)性的一種表現(xiàn)蟹但。如果在子類中定義某方法與其父類有相同的名稱和參數(shù)躯泰,我們說該方法
    被重寫 (Overriding)。子類的對象使用這個方法時华糖,將調(diào)用子類中的定義麦向,對它而言,父類中的定義如同被“屏蔽”了客叉,而且如果子類的方法名和參數(shù)類型和個數(shù)都和父類相同诵竭,那么子類的返回值類型必須和父類的相同;如果在一個類中定義了多個同
    名的方法兼搏,它們或有不同的參數(shù)個數(shù)或有不同的參數(shù)類型卵慰,則稱為方法的重載(Overloading)。Overloaded的方法是可以改變返回值的類型佛呻。也就是說裳朋,重載的返回值類型可以相同也可以不同。

資料

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吓著,一起剝皮案震驚了整個濱河市鲤嫡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌绑莺,老刑警劉巖暖眼,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異纺裁,居然都是意外死亡诫肠,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進店門欺缘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來栋豫,“玉大人,你說我怎么就攤上這事浪南×牛” “怎么了?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵络凿,是天一觀的道長骡送。 經(jīng)常有香客問我,道長絮记,這世上最難降的妖魔是什么摔踱? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮怨愤,結(jié)果婚禮上派敷,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好篮愉,可當(dāng)我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布腐芍。 她就那樣靜靜地躺著,像睡著了一般试躏。 火紅的嫁衣襯著肌膚如雪猪勇。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天颠蕴,我揣著相機與錄音泣刹,去河邊找鬼。 笑死犀被,一個胖子當(dāng)著我的面吹牛椅您,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播寡键,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼掀泳,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了西轩?” 一聲冷哼從身側(cè)響起开伏,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎遭商,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體捅伤,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡劫流,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了丛忆。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片祠汇。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖熄诡,靈堂內(nèi)的尸體忽然破棺而出可很,到底是詐尸還是另有隱情,我是刑警寧澤凰浮,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布我抠,位于F島的核電站,受9級特大地震影響袜茧,放射性物質(zhì)發(fā)生泄漏菜拓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一笛厦、第九天 我趴在偏房一處隱蔽的房頂上張望纳鼎。 院中可真熱鬧,春花似錦、人聲如沸贱鄙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽逗宁。三九已至映九,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間疙剑,已是汗流浹背氯迂。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留言缤,地道東北人嚼蚀。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像管挟,于是被迫代替她去往敵國和親轿曙。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,440評論 2 348

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

  • 1僻孝、方法的重寫(Override)(方法覆蓋) (1)重寫介紹: java SE5增加@Override注解导帝,并不...
    Hughman閱讀 1,359評論 0 3
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法穿铆,內(nèi)部類的語法您单,繼承相關(guān)的語法,異常的語法荞雏,線程的語...
    子非魚_t_閱讀 31,597評論 18 399
  • 第四章:請情敵治病 第五章:玩“車震”掉河里了 “我沒有打你虐秦。”顧閻覺得整個心臟都繃起來了凤优,他手忙腳亂地幫溫俞抹眼...
    咸魚惠翻身閱讀 348評論 7 7
  • 前段時間忙著換工作筑辨,一直沒更新俺驶。期間收到一些朋友的留言,我現(xiàn)在一切順利棍辕,感謝大家對小釋界的關(guān)注暮现,小釋界也會在后續(xù)持...
    小釋界閱讀 2,115評論 1 7
  • 我深信人類與泥土有著極大地關(guān)聯(lián)女媧造人的傳說頗有幾分真意鮮活的生命從泥土中來又回到泥土中去 只是那一望無際的沙漠像...
    君涼閱讀 437評論 47 53