2016-09-16 4 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); 
} 

는이 경우 기능 # 1의 "부모"오버로드 기능을 기능 # 2를 호출 올바른겠습니까을하기 때문에 기능 # 1 호출이 모두를 공개 야?

함수 # 3을이 함수의 "재귀 적"함수로 호출하는 것이 맞습니까? 아니면 재귀 적으로 자신을 호출하는 숨겨진 함수로 공용 함수에 의해 호출된다는 사실을 설명하는 또 다른 용어가 있습니까?

나는 올바른 용어는 아니지만, 내가 얻으려고하는 것은 각기 다른 유형의 오버로드 된 함수에 대해 해당 역할이 주어진 용어가 설정되어 있는지 여부입니다.

+0

사이드 노트 : java의 함수는 camelCase 여야합니다. – StackTraceYo

+1

메쏘드가'public'이고 API의 일부라면, 그 메쏘드가 사용될 것이라고 기대해야합니다. – flakes

+0

@Ahmad 감사합니다. 매일 C#에서 Java로 전환 할 때 바쁠 때가 있습니다. – bckr

답변

2

Java 언어 사양에서 정의하지 않은 용어를 정의하는 것을 꺼려합니다.

간단히 말해서 3 가지 기능, 2 public 및 1 private을 넣으십시오. 그들은 이라는 이름이이지만 다른 매개 변수 유형이 있으므로 은 과부하입니다.

실제로 자체를 호출하는 함수는 재귀 함수입니다. JLS는 자바 컴파일러가 자신을 호출하는 함수를 지원해야하므로이 용어를 정의합니다.

"부모 오버로드"로 기능 중 하나를 참조하지 마십시오. 특히 유용하지는 않으며 "추상화"라는 용어를 사용하는 것이 특이합니다.

+0

"idiosyncratic"은 오늘의 내 단어입니다. – flakes

+1

내일 "floccinaucinihilipilification"은 어떻습니까? (영국 의회에서 가장 오랫동안 사용 된 단어). – Bathsheba

+2

나는이 호흡을 몇 분 동안 발음하려고 노력해왔다. 동료들은 내가 지금 미친 사람이라고 생각할 수도 있습니다. – flakes

0

이 경우 특정 용어가 없습니다. 그러나 다소 비슷하게 생성자에 사용되는 패턴이 있습니다. "Telescoping Constructor Pattern"을 사용하고 "Builder Pattern"을 사용합니다. 똑같지 만 종류는 똑같습니다.