JavaSE 3th 方法的過載

2021-07-26 05:45:29 字數 1683 閱讀 5665

·方法的過載

test類中有如下void max(int a, int b)方法用於列印出兩個int型別的數中最大的數,但如果實參為float型別或double型別,該方法就不可用了。

class test 

}

於是新增了兩個方法如下:

class test 

void maxfloat(float a, float b)

void maxdouble(double a, double b)

}

每次需要根據傳入的數來確定方法名,這顯然太過麻煩,可以使用方法的過載解決這個問題:

class test 

void maxfloat(float a, float b)

void maxdouble(double a, double b)

}

方法的過載是指乙個類中可以定義有相同名字,但引數不同的多個方法。呼叫方法時,會根據不同的參數列選擇對應的方法。

程式會根據test.max(3, 4)或test.max(2.8, 5.2)來選擇調test類中不同的max方法。

假如需要比較short型別資料的大小,還可以進一步新增short型別資料的max方法:

class test 

void max(short a, short b)

void max(float a, float b)

void max(double a, double b)

public static void main(string args)

}

請問test.max(3, 4);是呼叫的哪乙個max方法?short的還是int的?

之前說過,當發生方法過載時,程式會根據實參來判斷呼叫哪乙個方法,這裡的3和4預設情況是int型別,因此呼叫的是void max(int a, int b)這個方法,那麼要呼叫void max(short a, short b)方法只要傳入的是兩個short型別的變數即可:

class test 

void max(short a, short b)

void max(float a, float b)

void max(double a, double b)

public static void main(string args)

}

對於如下情況的兩個max方法並不構成過載,由於可以不接收帶返回值方法的返回值,在直接呼叫test.max(3, 4)方法時,程式無法得知要呼叫的到底是哪乙個max方法,因此程式會出錯,故不構成方法過載。

class test 

int max(int a, int b)

}

一句話,方法名相同的一些方法,在被呼叫能夠與別的方法區分開而不至於出現混淆的情況,那麼這樣的方法互相之間構成過載。

· 構造方法的過載

與普通方法一樣,構造方法也可以過載,如下所示:

public class test 

}class person

person(int _id)

person(int _id, int_age)

}

JAVA SE基礎 17 方法的過載

方法過載 方法過載就是方法名稱重複,載入引數不同。具體規範 一.方法名一定要相同。二.方法的參數列必須不同,包括引數的型別或個數,以此區分不同的方法體。1.如果引數個數不同,就不管它的引數型別了!2.如果引數個數相同,那麼引數的型別或者引數的順序必須不同。三.方法的返回型別 修飾符可以相同,也可不同...

JavaSE之方法過載(可變參與包裝類呼叫問題)

目錄 一 過載定義 二 過載問題 2.1 複雜過載案例 2.2 過載呼叫順序 2.3 延伸思考 在同乙個類中,如果多個方法擁有相同的名字 不同的引數,即稱為方法過載。string類中的valueof 就是比較著名的過載案例,可以將輸入的基本資料型別 陣列 object等轉換成字串。在jvm眼中,方法...

JavaSE中的方法

成員方法 例項方法 沒有使用static關鍵字修飾的方法 可以被物件呼叫 靜態方法 類方法 使用static關鍵字修飾的方法 可以被類或物件呼叫 構造方法 作用 用於例項化物件,並對成員變數賦初始化值 特點 不能有返回值 方法名稱必須與類名保持一致,區分大小寫 不能使用static final等關鍵...