2015-06-04 47 views
-3

我不知道這是多麼簡單,或者如果可能,但我似乎無法找到任何信息。有一種方法可以設置多個參數。單個方法的多個參數

例如,在這個公共無效的情況下,當你調用java文件中的方法時,需要調用組件和和字符串。

public void testMethod(Component c, String s) 
{ 
    //Do Something 
} 

有沒有辦法說public void testMethod(Component c, String d)public void testMethod(Component c, int i)當調用該方法既可以規定?

+5

是的,它被稱爲「方法重載」。 – RealSkeptic

+3

你可以很容易地測試它。是的,這是可能的。 – Bubletan

+2

請把你的基本知識講清楚。閱讀一些教程,如[this](https://docs.oracle.com/javase/tutorial/java/javaOO/methods.html) – Turing85

回答

3

它被稱爲方法重載。只需將它們作爲單獨的方法創建,編譯器將(通常)根據您的輸入值推斷出正確的一個。

2

是的,這是可能的,是一個重要的概念。這種特殊的技術稱爲函數重載。假設你聲明2種功能,如:

public void testMethod(Component c, String d) {} //function 1 

public void testMethod(Component c, int d) {} //function 2 

然後,您可以調用這些函數從主要爲:

testMethod(c,"Hello") //calls function 1 
    testMethod(c,1) //calls function 2 
+0

複製粘貼失敗。我認爲這兩個電話會打電話給fnct 1 – HyperNeutrino

+0

這樣更好... – HyperNeutrino

+0

是啊對不起我的壞 –

1

這就是所謂的 「方法重載」。只要參數不同,任何兩種方法都可以具有相同的名稱。例如:

public void doStuff(String string, int integer) {} 
public void doStuff(Object object, float flt) {} 

這也適用於構造函數:

public Thing(String name, int id) {} 
public Thing(Object object, long id) {} 

然而,採取以下兩種方法,例如:

public void doStuff(String string) {} 
public void doStuff(Object object) {} 

現在,調用該方法doStuff(null)。編譯器無法推斷使用哪一個;在這種情況下,您將收到編譯錯誤。這也出現在構造函數中(只是爲了避開它,構造函數幾乎與方法相同)。

0

簡單地說,你可以。

public void testFunction(Component c, String s) { 
    // Handle on a string 
} 

public void testFunction(Component c, int i) { 
    // Handle on integer 
} 

這被稱爲方法重載。無論傳遞哪種類型,都會導致函數調用使用適當的方法。參數的順序依然很重要。

+0

+1表示參數的順序很重要。很多人都忘記了。有時候我也是 – HyperNeutrino