方法的過載和重寫

2021-10-22 20:32:24 字數 1995 閱讀 7960

1.1 過載的概念(overload)

在同乙個類中,允許存在乙個以上的同名方法,只要它們的引數個數或者引數型別不同即可。

過載就是同乙個類中多個同名方法根據不同的傳參來執行不同的邏輯處理

"兩同一不同":

1.2 構成過載的例項:

// 舉例一:arrays類中過載的sort() / binarysearch();printstream中的println()

// 舉例二:

// 如下的4個方法構成了過載

public

void

getsum

(int i,

int j)

public

void

getsum

(double d1,

double d2)

public

void

getsum

(string s ,

int i)

public

void

getsum

(int i,string s)

不構成過載的例項:

// 如下的3個方法不能與上述4個方法構成過載

public

intgetsum

(int i,

int j)

public

void

getsum

(int m,

int n)

private

void

getsum

(int i,

int j)

1.3 過載方法判斷

如何判斷是否構成方法過載?

嚴格按照定義判斷:兩同一不同。跟方法的許可權修飾符、返回值型別、形參變數名、方法體都沒關係!

應該注意的是,返回值不同,其它都相同不算是過載。

注:overloaded的方法是否可以改變返回值的型別?

如果幾個過載overloaded的方法的引數列表不一樣,它們的返回者型別當然也可以不一樣。

如何確定類中某乙個方法的呼叫:

①方法名 —> ②引數列表

2.1 什麼是方法的重寫(override 或 overwrite)?

子類繼承父類以後,可以對父類中同名同引數的方法,但要做出有別於父類的響應時,你就要覆蓋父類方法.

重寫發生在執行期,當建立子類物件以後,通過子類物件呼叫子父類中的同名同引數的方法時,實際執行的是子類重寫父類的方法。

注:構造器不能被繼承,因此不能被重寫,但可以被過載。

2.2 重寫舉例:

// 父類

class

circle

//求面積

}// 子類

class

cylinder

extends

circle

//求表面積

}

2.3 重寫的規則:

方法的宣告:

許可權修飾符  返回值型別  方法名(形參列表)

throws 異常的型別

約定俗稱:子類中的叫重寫的方法,父類中的叫被重寫的方法

子類重寫的方法的方法名和形參列表與父類被重寫的方法的方法名和形參列表相同

子類重寫的方法的許可權修飾符不小於父類被重寫的方法的許可權修飾符

返回值型別:

返回值型別、方法名、引數列表必須相同,丟擲的異常範圍小於等於父類,訪問修飾符範圍大於等於父類。

如果父類方法訪問修飾符為private/final/static則子類就不能重寫該方法,但是被 static 修飾的方法能夠被再次宣告。

注意:

使用 @override 註解,可以讓編譯器幫忙檢查是否滿足上面的兩個限制條件。

方法重寫和過載

方法過載就是在乙個類中可以定義多個方法名形同但是方法引數個數 型別 順序至少有乙個不一樣。過載的好處就是 我們可以很根據實際情況靈活地呼叫過載方法。1 構造方法的過載 public class student public student string name public student int...

方法重寫和過載

簡介 在同乙個類中,存在兩個或者兩個以上的同名函式,叫做方法的過載,讓類以統一的方式處理不同型別的資料,是多型的體現。在編譯器的眼裡,方法名稱 引數型別 引數個數,組成唯一鍵,稱為 方法簽名 jvm通過這個唯一的鍵,確定呼叫哪個過載的方法。要求 1 方法名一樣 2 引數列表不一樣 3 與方法的返回型...

方法過載和重寫

方法過載和重寫 過載 過載是發生在本類中的 方法名相同,引數型別和個數不同,方法的過載跟返回值型別和修飾符無關 1 必須具有不同的引數列表 2 可以有不同的返回型別,只要引數列表不同就可以了 3 可以有不同的訪問修飾符 4 可以丟擲不同的異常 重寫 發生在子父類中 所謂方法的重寫是指子類中的方法與父...