激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - 面試官:java方法重寫(xiě)時(shí)需要注意的問(wèn)題有哪些?

面試官:java方法重寫(xiě)時(shí)需要注意的問(wèn)題有哪些?

2021-12-30 22:27Java面試真題解析磊哥 Java教程

在面向?qū)ο缶幊讨?,方法重?xiě)(override)是一種語(yǔ)言特性,它是多態(tài)的具體表現(xiàn),它允許子類(lèi)重新定義父類(lèi)中已有的方法,且子類(lèi)中的方法名和參數(shù)類(lèi)型及個(gè)數(shù)都必須與父類(lèi)保持一致,這就是方法重寫(xiě)。

面試官:java方法重寫(xiě)時(shí)需要注意的問(wèn)題有哪些?

在面向?qū)ο缶幊讨校?a href="/article/132596.html">方法重寫(xiě)(override)是一種語(yǔ)言特性,它是多態(tài)的具體表現(xiàn),它允許子類(lèi)重新定義父類(lèi)中已有的方法,且子類(lèi)中的方法名和參數(shù)類(lèi)型及個(gè)數(shù)都必須與父類(lèi)保持一致,這就是方法重寫(xiě)。

方法重寫(xiě)最簡(jiǎn)單的示例如下,定義一個(gè)父類(lèi) Father 和子類(lèi) Son,父類(lèi)中有一個(gè) method 方法,而在子類(lèi)中會(huì)重寫(xiě) method 方法,具體實(shí)現(xiàn)代碼如下。父類(lèi) Father 實(shí)現(xiàn)代碼如下:

  1. /**
  2. * 父類(lèi)
  3. */
  4. class Father {
  5. public void method(String name) {
  6. System.out.println("Father:" + name);
  7. }
  8. }

子類(lèi)中重寫(xiě)父類(lèi) method 方法,具體實(shí)現(xiàn)代碼如下:

  1. /**
  2. * 子類(lèi)
  3. */
  4. class Son extends Father {
  5. @Override
  6. public void method(String name) {
  7. // 子類(lèi)中重新定義了打印的行為,不再是 Father:XXX,而是 Son:XXX
  8. System.out.println("Son:" + name);
  9. }
  10. }

在程序中調(diào)用并執(zhí)行 method 方法,具體實(shí)現(xiàn)代碼如下:

  1. public class OverrideExample {
  2. public static void main(String[] args) {
  3. Father father = new Son();
  4. father.method("Java");
  5. }
  6. }

以上程序的執(zhí)行結(jié)果如下圖所示:

面試官:java方法重寫(xiě)時(shí)需要注意的問(wèn)題有哪些?

然而在方法重寫(xiě)的過(guò)程中,也需要注意以下問(wèn)題。

注意事項(xiàng)1:子類(lèi)權(quán)限控制符不能變小

在 Java 中權(quán)限控制符的級(jí)別如下:

  1. public > protected > 無(wú) > private

假如父類(lèi)中的方法定義的是 protected 控制符,具體實(shí)現(xiàn)代碼如下:

  1. class Father {
  2. protected void method(String name) {
  3. System.out.println("Father:" + name);
  4. }
  5. }

那么此時(shí)如果子類(lèi)重寫(xiě)父類(lèi)方法時(shí),定義的權(quán)限控制符小于 protected 就會(huì)報(bào)錯(cuò),如下圖所示:

面試官:java方法重寫(xiě)時(shí)需要注意的問(wèn)題有哪些?

那么問(wèn)題來(lái)了,子類(lèi)中的訪(fǎng)問(wèn)控制符能變大嗎?答案是肯定的,如下圖所示:

面試官:java方法重寫(xiě)時(shí)需要注意的問(wèn)題有哪些?

結(jié)論:在子類(lèi)重寫(xiě)父類(lèi)的方法時(shí),重寫(xiě)的方法權(quán)限控制符不能變小,它可以等于或大于父類(lèi)的權(quán)限控制符。

注意事項(xiàng)2:子類(lèi)返回值類(lèi)型只能變小

在講此注意事項(xiàng)之前,我們先來(lái)看點(diǎn)前置知識(shí),在 Java 語(yǔ)言中 Number 類(lèi)是 Long 的父類(lèi),繼承關(guān)系如下圖所示:

面試官:java方法重寫(xiě)時(shí)需要注意的問(wèn)題有哪些?

接下來(lái),我們?cè)诟割?lèi)中使用 Number 類(lèi)型來(lái)表示方法的返回類(lèi)型:

  1. class Father {
  2. public Number method(int num1, int num2) {
  3. return num1 + num2;
  4. }
  5. }

在子類(lèi)的實(shí)現(xiàn)中使用 Number 類(lèi)型的子類(lèi) Long 類(lèi)型,是可以正常重寫(xiě)父類(lèi)的方法的,如下圖所示:

面試官:java方法重寫(xiě)時(shí)需要注意的問(wèn)題有哪些?

當(dāng)然,如果和父類(lèi)的返回類(lèi)型保持一致也是可以的,如下圖所示:

面試官:java方法重寫(xiě)時(shí)需要注意的問(wèn)題有哪些?

但是,如果嘗試將子類(lèi)中的返回類(lèi)型變大就會(huì)報(bào)錯(cuò)了,如下圖所示(Object 是 Number 類(lèi)型的父類(lèi)):圖片

注意事項(xiàng)3:拋出的異常類(lèi)型只能變小

如果子類(lèi)中拋出異常的類(lèi)型變大,也就是子類(lèi)方法中拋出的異常類(lèi)型大于父類(lèi)方法拋出的異常類(lèi)型,那么程序就會(huì)報(bào)錯(cuò),如下圖所示:

面試官:java方法重寫(xiě)時(shí)需要注意的問(wèn)題有哪些?

此時(shí)正確的解決方案是,保持父類(lèi)和子類(lèi)拋出的異常類(lèi)型相同,如下圖所示:

面試官:java方法重寫(xiě)時(shí)需要注意的問(wèn)題有哪些?

注意事項(xiàng)4:方法名必須保持一致

如果子類(lèi)重寫(xiě)的方法名不能和父類(lèi)保持一致,那么程序也會(huì)報(bào)錯(cuò),如下圖所示:

面試官:java方法重寫(xiě)時(shí)需要注意的問(wèn)題有哪些?

注意事項(xiàng)5:方法的參數(shù)類(lèi)型和個(gè)數(shù)必須保持一致

子類(lèi)中的方法參數(shù)類(lèi)型和個(gè)數(shù)都要和父類(lèi)方法保持一致,不然也會(huì)報(bào)錯(cuò),如下圖所示。

方法的參數(shù)類(lèi)型不一致

面試官:java方法重寫(xiě)時(shí)需要注意的問(wèn)題有哪些?

方法的參數(shù)個(gè)數(shù)不一致

面試官:java方法重寫(xiě)時(shí)需要注意的問(wèn)題有哪些?

總結(jié)

本文介紹了 Java 中的方法重寫(xiě)(Override)是在子類(lèi)重新定義父類(lèi)已有方法的過(guò)程,它是面向?qū)ο缶幊讨卸鄳B(tài)的具體表現(xiàn)。我們可以通過(guò) @Override 關(guān)鍵字重寫(xiě)父類(lèi)中的某個(gè)方法,但在重寫(xiě)的過(guò)程中需要注意以下 5 個(gè)問(wèn)題:

  • 子類(lèi)方法的權(quán)限控制符不能變小;
  • 子類(lèi)方法返回的類(lèi)型只能變小;
  • 子類(lèi)拋出異常的類(lèi)型只能變小;
  • 子類(lèi)方法名必須和父類(lèi)保持一致;
  • 子類(lèi)方法的參數(shù)類(lèi)型和個(gè)數(shù)必須和父類(lèi)保持一致。

參考資料:《碼出高效》

原文鏈接:https://mp.weixin.qq.com/s/_I72minTniH5SAtsDaajYA

延伸 · 閱讀

精彩推薦
  • Java教程Java實(shí)現(xiàn)搶紅包功能

    Java實(shí)現(xiàn)搶紅包功能

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)搶紅包功能,采用多線(xiàn)程模擬多人同時(shí)搶紅包,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程升級(jí)IDEA后Lombok不能使用的解決方法

    升級(jí)IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級(jí),尋思已經(jīng)有好久沒(méi)有升過(guò)級(jí)了。升級(jí)完畢重啟之后,突然發(fā)現(xiàn)好多錯(cuò)誤,本文就來(lái)介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程Java BufferWriter寫(xiě)文件寫(xiě)不進(jìn)去或缺失數(shù)據(jù)的解決

    Java BufferWriter寫(xiě)文件寫(xiě)不進(jìn)去或缺失數(shù)據(jù)的解決

    這篇文章主要介紹了Java BufferWriter寫(xiě)文件寫(xiě)不進(jìn)去或缺失數(shù)據(jù)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程Java8中Stream使用的一個(gè)注意事項(xiàng)

    Java8中Stream使用的一個(gè)注意事項(xiàng)

    最近在工作中發(fā)現(xiàn)了對(duì)于集合操作轉(zhuǎn)換的神器,java8新特性 stream,但在使用中遇到了一個(gè)非常重要的注意點(diǎn),所以這篇文章主要給大家介紹了關(guān)于Java8中S...

    阿杜7482021-02-04
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關(guān)于小米推送Java代碼,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧...

    富貴穩(wěn)中求8032021-07-12
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程xml與Java對(duì)象的轉(zhuǎn)換詳解

    xml與Java對(duì)象的轉(zhuǎn)換詳解

    這篇文章主要介紹了xml與Java對(duì)象的轉(zhuǎn)換詳解的相關(guān)資料,需要的朋友可以參考下...

    Java教程網(wǎng)2942020-09-17
  • Java教程20個(gè)非常實(shí)用的Java程序代碼片段

    20個(gè)非常實(shí)用的Java程序代碼片段

    這篇文章主要為大家分享了20個(gè)非常實(shí)用的Java程序片段,對(duì)java開(kāi)發(fā)項(xiàng)目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
主站蜘蛛池模板: 九一免费在线观看 | 夜夜夜精品视频 | 美女黄网站免费观看 | 懂色粉嫩av久婷啪 | 免费国产自久久久久三四区久久 | 国产精品免费一区二区三区都可以 | 免费国产一区二区视频 | 97中文字幕第一一一页 | 成人艳情一二三区 | 九九精品在线观看 | www.mitao| 精品国产96亚洲一区二区三区 | 免费中文视频 | 成人免费看片视频 | 午夜视频免费在线观看 | 中文字幕电影免费播放 | 色视频在线观看 | 久久久久久久久久久高潮一区二区 | 日日噜噜噜噜久久久精品毛片 | 欧美成人免费一区二区三区 | av成人一区二区 | 免费的性生活视频 | 伊人二本二区 | 一级精品| 国产在线一级视频 | 一区二区三区黄色 | 成人男女激情免费视频 | 国产精品视频yy9299一区 | 日韩欧美综合在线 | 亚洲午夜精品视频 | 久久久在线 | 欧美成人精品欧美一级乱黄 | 天天干导航 | 国产91小视频在线观看 | 宅男噜噜噜66一区二区 | 91久久久久久亚洲精品禁果 | 国产成人av一区二区 | 污黄视频在线播放 | 久久精品国产99国产精品亚洲 | 在线免费观看日韩视频 | 极品一级片 |