2016-09-16 55 views
1

例如,說我有這3個重載函數:函數重載:用於不同類型的重載函數的術語?

/** Function #1 */ 
public static String add(List<String> operands) 
{ 
    return add(operands, 10); 
} 

/** Function #2 */ 
public static String add(List<String> operands, int base) 
{ 

    return Integer.toString(add(Integer.parseInt(operands.remove(0), base),operands, base), base); 
} 

/** Function #3 */ 
private static int add(int result, List<String> operands, int base) 
{ 
    if(operands.size() == 0) 
    { 
     return result; 
    } 

    result += Integer.parseInt(operands.remove(0), base); 

    return add(result, operands, base); 
} 

難道是正確調用函數#2在這種情況下,功能#1「父」重載函數,因爲#1功能調用,而且甲乙是公開的嗎?

將函數#3稱爲這些函數的「遞歸」函數還是另一個術語來描述它被公共函數調用爲一個遞歸調用自身的隱藏函數?

我知道那些將不是正確的術語,但我想知道的是,是否爲給定角色的不同類型的重載函數設置了術語。

+0

旁註:java中的函數應該是camelCase。 – StackTraceYo

+1

如果某個方法是「public」並且是您的API的一部分,那麼您應該期望它可以被使用。 – flakes

+0

@Ahmad謝謝,糾正。每天從C#切換到Java時都會變得忙碌起來。 – bckr

回答

2

我不願意定義Java語言規範中沒有的任何術語。

簡單地說,你有3個功能,2 public和1 private。他們有相同的名稱但不同的參數類型,所以它們是過載

事實上,一個自稱爲函數的函數是遞歸函數。由於Java編譯器必須支持自稱的函數,所以JLS確定了這個術語。

不要將您的某個函數稱爲「父類超載」 - 它不是特別有用,您對「抽象」一詞的使用是特殊的。

+0

「特質」是我一天中的話 – flakes

+1

明天「floccinaucinihilipilification」如何? (英國議會有史以來最長的一句話)。 – Bathsheba

+2

我一直試圖在我的呼吸下發音幾分鐘。我的同事現在可能認爲我是個瘋子。 – flakes

0

對於這種情況,我沒有一個特定的術語;然而,有一種用於構造函數的模式,它與此相似。 「Telescoping Constructor Pattern」和使用「Builder Pattern」並不是直接相同,而是一樣的想法。