成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Java 中的 override 和 overload,看這一篇就夠

clasnake / 1194人閱讀

摘要:同樣的方法名稱,參數(shù)列表,返回類型,拋出的異?;蛘呤歉割悞伋龅漠惓5淖宇?,子類重寫一個(gè)。使用方法過載的目的,根據(jù)調(diào)用時(shí)的實(shí)參表與形參表,來選擇對(duì)應(yīng)的方法體的。

問題出現(xiàn):
即使對(duì)于一個(gè)經(jīng)驗(yàn)豐富的開發(fā)人員來說,方法重載和方法覆蓋的區(qū)別都能讓他猶豫一下,
對(duì)于新手來說,經(jīng)常容易弄混淆。
有沒有比較深入淺出的理解方式,能讓人過目不忘,用起來還能有條件反射般的速度呢?
其他人是怎么做的:
寫類似比較的博客非常之多,無非也就是分開介紹,然后比較區(qū)別。
好像也有效果,前提是要理解,完了還要不時(shí)拿來復(fù)習(xí),保持記憶不被遺忘。
可以這樣理解:
override 更準(zhǔn)確的翻譯應(yīng)該是推翻,重寫。
overload 更準(zhǔn)確的翻譯應(yīng)該是過載。
    如果你不是新手,看到這個(gè)解釋的時(shí)候應(yīng)該有點(diǎn)茅塞頓開的感覺,
    因?yàn)橹弊g之后的意思就是這兩個(gè)方式的功能概括。
所以:
override 個(gè)人喜歡叫做方法重寫;
overload 個(gè)人喜歡叫做方法過載。
分析:
為什么叫方法重寫:
    父類中的方法滿足不了需要,子類可以推翻父類中的方法。
    同樣的方法名稱,參數(shù)列表,返回類型,拋出的異常(或者是父類拋出的異常的子類),子類重寫一個(gè)。
    所以方法重寫要求很嚴(yán)格,除了方法體內(nèi)部的實(shí)現(xiàn)和訪問權(quán)限,其他的都要和父類中需要被重寫的方法保持一致。
    有一點(diǎn)要特別注意,方法重寫之后訪問權(quán)限可以不同:
        可以擴(kuò)大訪問權(quán)限,但是不能降低訪問權(quán)限。
        可以看作是對(duì)子類的兼容性和拓展性要求的折衷妥協(xié)吧。
    注意:被重寫的方法訪問權(quán)限不能為 private,因?yàn)?private 修飾的方法子類沒有訪問權(quán)限,更不要提重寫。

為什么叫方法過載:
    過載指的是應(yīng)對(duì)不同的參數(shù)列表而產(chǎn)生的方法過載。
    所以方法過載要求方法名稱必須相同,參數(shù)列表必須不同;
    訪問權(quán)限,返回類型,拋出的異常之類的可以相同也可以不同。
        使用方法過載的目的,根據(jù)調(diào)用時(shí)的實(shí)參表與形參表,來選擇對(duì)應(yīng)的方法體的。
    注意:如果某一方法在父類中是訪問權(quán)限是 private,那么就不能在子類對(duì)其進(jìn)行重載;
    如果定義的話,也只是定義了一個(gè)新方法,而不會(huì)達(dá)到重載的效果。
    
練習(xí)一下:
class A {
 protected int method1(int a, int b) { return 0; }
}

public class B extends A{ 
 public int method1(int a, int b) { return 0; }
 // private int method1(int a, int b) { return 0; } 
 // private long method1(int a, int b) { return 0; } 
 public short method1(int a, long b) { return 0; }
 private int method1(int a, long b) { return 0; }
}

(參考答案預(yù)警!你不打算在心里演算一下么?)
參考答案:
class A {
 protected int method1(int a, int b) { return 0; }
}

public class B extends A{ 
 public int method1(int a, int b) { return 0; } // 正確,重寫父類方法,可以擴(kuò)大訪問權(quán)限
 // private int method1(int a, int b) { return 0; } // 錯(cuò)誤,重寫父類方法,不能降低了訪問權(quán)限
 // private long method1(int a, int b) { return 0; } // 錯(cuò)誤,重寫父類方法,不能改變返回值類型
 public short method1(int a, long b) { return 0; } // 正確,method1 方法參數(shù)過載,可以有不同的訪問權(quán)限和返回值類型
 private int method1(int a, long b) { return 0; }/ /正確,method1 方法參數(shù)過載,可以有不同的訪問權(quán)限和返回值類型
}
小結(jié):
override 方法重寫,也叫方法覆蓋;
    要求與被重寫的方法:
        名稱相同,
        參數(shù)列表相同,
        返回類型相同,
        拋出的異常相同(或者是父類拋出的異常的子類)。
    被重寫的方法訪問權(quán)限不能為 private。

overload 方法過載;
    要求過載的方法:
        方法名稱必須相同;
        參數(shù)列表必須不同;
        訪問權(quán)限,返回類型,拋出的異??梢韵嗤部梢圆煌?    

傳送門:http://blog.51cto.com/1350814...
本文系筆者原創(chuàng)
轉(zhuǎn)載請(qǐng)注明出處
—————————————

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/72843.html

相關(guān)文章

  • Spring Boot 2.x(十四):整合Redis,看這一篇就夠

    摘要:豐富的特性還支持通知過期等等特性。到這個(gè)就說明測(cè)試通過了。主要針對(duì)方法配置,能夠根據(jù)方法的請(qǐng)求參數(shù)對(duì)其進(jìn)行緩存,常用于查詢操作主要針對(duì)方法配置,能夠根據(jù)方法的請(qǐng)求參數(shù)對(duì)其進(jìn)行緩存,常用于修改操作清空緩存,主要用于刪除操作。 [TOC] Redis簡(jiǎn)介 Redis 是一個(gè)開源的使用 ANSI C 語言編寫、遵守 BSD 協(xié)議、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value 數(shù)...

    Miracle 評(píng)論0 收藏0
  • SpringBoot中并發(fā)定時(shí)任務(wù)的實(shí)現(xiàn)、動(dòng)態(tài)定時(shí)任務(wù)的實(shí)現(xiàn)(看這一篇就夠了)

    摘要:也是自帶的一個(gè)基于線程池設(shè)計(jì)的定時(shí)任務(wù)類。其每個(gè)調(diào)度任務(wù)都會(huì)分配到線程池中的一個(gè)線程執(zhí)行,所以其任務(wù)是并發(fā)執(zhí)行的,互不影響。 原創(chuàng)不易,如需轉(zhuǎn)載,請(qǐng)注明出處https://www.cnblogs.com/baixianlong/p/10659045.html,否則將追究法律責(zé)任?。?! 一、在JAVA開發(fā)領(lǐng)域,目前可以通過以下幾種方式進(jìn)行定時(shí)任務(wù) 1、單機(jī)部署模式 Timer:jdk中...

    BWrong 評(píng)論0 收藏0
  • Spring入門看這一篇就夠

    摘要:甲乙交易活動(dòng)不需要雙方見面,避免了雙方的互不信任造成交易失敗的問題。這就是的核心思想。統(tǒng)一配置,便于修改。帶參數(shù)的構(gòu)造函數(shù)創(chuàng)建對(duì)象首先,就要提供帶參數(shù)的構(gòu)造函數(shù)接下來,關(guān)鍵是怎么配置文件了。 前言 前面已經(jīng)學(xué)習(xí)了Struts2和Hibernate框架了。接下來學(xué)習(xí)的是Spring框架...本博文主要是引入Spring框架... Spring介紹 Spring誕生: 創(chuàng)建Spring的...

    superw 評(píng)論0 收藏0
  • JSON入門看這一篇就夠

    摘要:采用完全獨(dú)立于任何程序語言的文本格式,使成為理想的數(shù)據(jù)交換語言為什么需要提到,我們就應(yīng)該和來進(jìn)行對(duì)比。也是一種存儲(chǔ)和交換文本信息的手段。那么好在哪里呢比更小更快,更易解析。使用的時(shí)候,也支持將轉(zhuǎn)成但是,我們不一定使用框架來做開發(fā)呀。 什么是JSON JSON:JavaScript Object Notation 【JavaScript 對(duì)象表示法】 JSON 是存儲(chǔ)和交換文本信息的語法...

    gplane 評(píng)論0 收藏0
  • Python 中的 or and 運(yùn)算,看這一篇就夠

    摘要:?jiǎn)栴}出現(xiàn)中的,運(yùn)算,可以寫出比較復(fù)雜的演算表達(dá)式看了一些大神的演算規(guī)則解釋,覺得不是很好理解,有些人甚至理解錯(cuò)了規(guī)則。特殊情況當(dāng)表達(dá)式的所有值都是真值,并且運(yùn)算符不全部一致,那么第一個(gè)或演算完后直接返回。 問題出現(xiàn): Python 中的 or,and 運(yùn)算,可以寫出比較復(fù)雜的演算表達(dá)式; 看了一些大神的演算規(guī)則解釋,覺得不是很好理解,有些人甚至理解錯(cuò)了規(guī)則。 這里聊一下自己的理解。 ...

    劉永祥 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<