開啟主選單

求真百科

  重載

overload可直譯為重載,它是指我們可以定義一些名稱相同的方法,通過定義不同的輸入參數來區分這些方法,然後再調用時,VM就會根據不同的參數樣式,來選擇合適的方法執行。overload最常見於java的編寫過程中,是面向對象程序設計(Object Oriented Programming)的特性之一。

目錄

簡介

1、在使用重載時只能通過不同的參數樣式。例如,不同的參數類型,不同的參數個數,不同的參數順序(當然,同一方法內的幾個參數類型必須不一樣,例如可以是fun(int, float), 但是不能為fun(int, int));2、不能通過訪問權限、返回類型、拋出的異常進行重新加載;3、方法的異常類型和數目不會對重新加載造成影響;4、對於繼承來說,如果某一方法在父類中是訪問權限是private,那麼就不能在子類對其進行重載,如果定義的話,也只是定義了一個新方法,而不會達到重載的效果。override可以翻譯為覆蓋,從字面就可以知道,它是覆蓋了一個方法並且對其重寫,以求達到不同的作用。對我們來說最熟悉的覆蓋就是對接口方法的實現,在接口中一般只是對方法進行了聲明,而我們在實現時,就需要實現接口聲明的所有方法。除了這個典型的用法以外,我們在繼承中也可能會在子類覆蓋父類中的方法。在使用override(覆蓋)要注意以下的幾點:1、覆蓋的方法的標誌必須要和被覆蓋的方法的標誌完全匹配,才能達到覆蓋的效果;2、覆蓋的方法的返回值必須和被覆蓋的方法的返回一致,或者是其子類(jdk1.5.0版本以上);3、覆蓋的方法所拋出的異常必須和被覆蓋方法的所拋出的異常一致,或者是其子類;4、被覆蓋的方法不能為private,否則在其子類中只是新定義了一個方法,並沒有對其進行覆蓋。

評價

下面是對override和overload的測試程序,其中注釋中的內容都是會產生編譯錯誤的代碼,我們將注釋去掉,看看在編譯時會產生什麼效果。// 對overload測試的文件:OverloadTest.javapublic class OverloadTest {// 下面幾個方法用來驗證可以通過定義不同的參數類型和參數的數目進行方法重載。public void fun(){System.out.println("method fun in OverloadTest, no parameter");}public void fun(float f) {System.out.println("method fun in OverloadTest, parameter type: float");}public void fun(int i){System.out.println("method fun in OverloadTest, parameter type: int");}public void fun(int i1, int i2) {System.out.println("method fun in OverloadTest, parameter type: int, int");}// 下面的兩個方法用來驗證可以通過定義不同的參數順序進行方法重載。// 需要注意:這裡的參數肯定不是相同的類型,否則的順序的先後就毫無意義。[1]

參考文獻

  1. 重載搜狗