⑴ 方法的重載和重寫問題
方法重載是讓類以統一的方式處理不同類型數據的一種手段。Java的方法重載,就旅飢是在類中可以創建多個方法,它們具有相同的名字,但具有不同的參數和不同的定義。調用方法弊派時通過傳遞給它們的不同個數和類型的參數來決定具體使用哪個方法。
簡單的說
方法重載就是方法名稱重復,載入參數不同。
一.方法名一定要相同。
二.方法的參數表必須不同,包括參數的類型或個數,以此區分不同的方法體。
1.如果參數個數不同,就不管它的參數類型了!
2.如果參數個數相同,那麼參數的類型或者參數的順序必須不同。
在java中方法的返回類型不做為方法重載的標識:
在java核心技術中:
public String m1 () {
// 邏輯1
return 「1」; // 隨便返回一個值,沒有意義,只是展示
}
public void m1 () {
// 邏拆卜返輯2
return 0; // 隨便返回一個值,沒有意義,只是展示
}
上面2個方法「重載」,只是返回值不同
當執行: m1();
JVM是不知道執行那個方法的,因此返回值不做為重載的標志
方法重寫(overiding method)
在Java中,子類可繼承父類中的方法,而不需要重新編寫相同的方法。但有時子類並不想原封不動地繼承父類的方法,而是想作一定的修改,這就需要採用方法的重寫。方法重寫又稱方法覆蓋。
若子類中的方法與父類中的某一方法具有相同的方法名、返回類型和參數表,則新方法將覆蓋原有的方法。
如需父類中原有的方法,可使用super關鍵字,該關鍵字引用了當前類的父類。
方法重寫的特性
1.發生方法重寫的兩個方法返回值、方法名、參數列表必須完全一致(子類重寫父類的方法)
2.子類拋出的異常下不能超過父類相應方法拋出的異常(子類異常不能大於父類異常)
3.子類方法的訪問級別不能低於父類相應方法的訪問級別(子類訪問級別不能低於父類訪問級別)
根據2,3條是不是能確定第一條,子類方法的返回值必須是父類方法返回值的子類。
⑵ java方法重載是指一個類中的,方法重寫是不同類中的,對嗎
什麼是方法的重載:
java中,可以在同一個類中用相同的名稱定義兩個或者多個方法,但是參數項不同(分為參數類型不同和參數數量不同)。當兩個方法名稱相同而參數項不同時,那麼就認為此方法被重載,而此過程就被稱為"方法重載"。調用重載方法時,java使用參數的類型和數量決定實際調用重載方法的哪個版本。重載方法可以具有不同的返回類型,但返回類型本身不足以區分方法的兩個版本。因此重載方法的參數類型或者數量必須不同.
方法重載支持多態性,因為它是java實現"一個介面,多重方法"模式的一種方式。此外,構造方法也可以被重載。
什麼是方法重寫:
在類體系結構中,當子類中的方法與其父類中的方法具有相同的方法時,則認為子類中的方法重寫了父類中的方法。從子類中調用重寫方法時,將總是調用出現在子類中的方法,而父類中的方法將會被隱藏。如果程序員需要訪問重寫方法的父類中的該方法,可以使用關鍵字super來完成。
方法重寫以後父類的方法並沒有小時,只是隱藏了而已,仍然是可以調用的。