国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

clasnake / 1167人閱讀

摘要:同樣的方法名稱,參數列表,返回類型,拋出的異常或者是父類拋出的異常的子類,子類重寫一個。使用方法過載的目的,根據調用時的實參表與形參表,來選擇對應的方法體的。

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

為什么叫方法過載:
    過載指的是應對不同的參數列表而產生的方法過載。
    所以方法過載要求方法名稱必須相同,參數列表必須不同;
    訪問權限,返回類型,拋出的異常之類的可以相同也可以不同。
        使用方法過載的目的,根據調用時的實參表與形參表,來選擇對應的方法體的。
    注意:如果某一方法在父類中是訪問權限是 private,那么就不能在子類對其進行重載;
    如果定義的話,也只是定義了一個新方法,而不會達到重載的效果。
    
練習一下:
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; }
}

(參考答案預警!你不打算在心里演算一下么?)
參考答案:
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; } // 正確,method1 方法參數過載,可以有不同的訪問權限和返回值類型
 private int method1(int a, long b) { return 0; }/ /正確,method1 方法參數過載,可以有不同的訪問權限和返回值類型
}
小結:
override 方法重寫,也叫方法覆蓋;
    要求與被重寫的方法:
        名稱相同,
        參數列表相同,
        返回類型相同,
        拋出的異常相同(或者是父類拋出的異常的子類)。
    被重寫的方法訪問權限不能為 private。

overload 方法過載;
    要求過載的方法:
        方法名稱必須相同;
        參數列表必須不同;
        訪問權限,返回類型,拋出的異常可以相同也可以不同。
    

傳送門:http://blog.51cto.com/1350814...
本文系筆者原創
轉載請注明出處
—————————————

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/72843.html

相關文章

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

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

    Miracle 評論0 收藏0
  • SpringBoot中并發定時任務的實現、動態定時任務的實現(看這一篇就夠了)

    摘要:也是自帶的一個基于線程池設計的定時任務類。其每個調度任務都會分配到線程池中的一個線程執行,所以其任務是并發執行的,互不影響。 原創不易,如需轉載,請注明出處https://www.cnblogs.com/baixianlong/p/10659045.html,否則將追究法律責任!!! 一、在JAVA開發領域,目前可以通過以下幾種方式進行定時任務 1、單機部署模式 Timer:jdk中...

    BWrong 評論0 收藏0
  • Spring入門看這一篇就夠

    摘要:甲乙交易活動不需要雙方見面,避免了雙方的互不信任造成交易失敗的問題。這就是的核心思想。統一配置,便于修改。帶參數的構造函數創建對象首先,就要提供帶參數的構造函數接下來,關鍵是怎么配置文件了。 前言 前面已經學習了Struts2和Hibernate框架了。接下來學習的是Spring框架...本博文主要是引入Spring框架... Spring介紹 Spring誕生: 創建Spring的...

    superw 評論0 收藏0
  • JSON入門看這一篇就夠

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

    gplane 評論0 收藏0
  • Python 中的 or and 運算,看這一篇就夠

    摘要:問題出現中的,運算,可以寫出比較復雜的演算表達式看了一些大神的演算規則解釋,覺得不是很好理解,有些人甚至理解錯了規則。特殊情況當表達式的所有值都是真值,并且運算符不全部一致,那么第一個或演算完后直接返回。 問題出現: Python 中的 or,and 運算,可以寫出比較復雜的演算表達式; 看了一些大神的演算規則解釋,覺得不是很好理解,有些人甚至理解錯了規則。 這里聊一下自己的理解。 ...

    劉永祥 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<