若方法有同樣的名字,Java怎樣知道我們指的哪一個方法呢?這裡有一個簡單的規則:每個過載的方法都必須采取獨一無二的自變量類型列表。
若稍微思考幾秒鐘,就會想到這樣一個問題:除根據自變量的類型,程序員如何區分兩個同名方法的差異呢?
即使自變量的順序也足夠我們區分兩個方法(盡管我們通常不願意采用這種方法,因為它會產生難以維護的代碼):
//: OverloadingOrder.java
// Overloading based on the order of
// the arguments.
public class OverloadingOrder {
static void print(String s, int i) {
System.out.println(
"String: " + s +
", int: " + i);
}
static void print(int i, String s) {
System.out.println(
"int: " + i +
", String: " + s);
}
public static void main(String[] args) {
print("String first", 11);
print(99, "Int first");
}
} ///:~
兩個print()方法有完全一致的自變量,但順序不同,可據此區分它們。