2013-05-16 4 views
0

매개 변수 전달에 대한 질문이 있습니다. 이 예제에서 method2는 methodOne을 호출하려고하지만 Color 색상이 아닌 x 및 y 값만 사용하려고합니다. 이 일을하려고하면 형식 메서드 'method nameO'(double x, double y, Color color)이 'example class name'형식의 인수 (double, double)에 적용되지 않습니다. "

Can methodTwo는 methodOne의 모든 인수를 정확히 사용하지 않으면 다른 methodOne을 호출하지 않습니까?매개 변수 전달 및 메서드 호출

private void methodOne (double x, double y, Color color){ 
    statements...; 
    } 

private void methodTwo (x, y){ 
    methodOne(x, y); 
    statements...; 
} 
+0

이것은 무엇입니까? 방법 1 (x, y); 이것이 유효한 방법인가요? 그것을 바로 잡으십시오. –

+0

@JDeveloper 나는 실수를 깨달았고 편집했습니다. –

답변

1

당신은 방법 항목을 호출하는 모든 매개 변수를 사용해야합니다.

것은 당신이 그것을 사용하지 않는 경우 방법이 다른 방법 하나를 호출 할 수 없습니다

private void methodTwo (x, y){ 
    method 1(x, y, null); 
    statements...; 
} 
+0

감사합니다. 나는 그 간단한 대답을 고맙습니다. –

0

메소드 이름은 한 단어 여야합니다. 또한 마지막 매개 변수를 제공해야합니다. JLS에서

private void method1 (double x, double y, Color color){ 
    statements...; 
    } 

private void method2 (x, y){ 
    method1(x, y, someColorOrNull); 
    statements...; 
} 

의 3.8 절 "식별자"

식별자는 Java 문자이어야 처음있는 자바 문자와 자바 숫자의 무제한 길이의 시퀀스입니다.

Identifier: 
    IdentifierChars but not a Keyword or BooleanLiteral or NullLiteral 

IdentifierChars: 
    JavaLetter 
    IdentifierChars JavaLetterOrDigit 

JavaLetter: 
    any Unicode character that is a Java letter (see below) 

JavaLetterOrDigit: 
    any Unicode character that is a Java letter-or-digit (see below) 
+0

당신이 옳아요. 방금 내 질문을 편집했습니다. –

0

같은 방법 항목을 사용할 수있는 세 번째 매개 변수가없는 경우 (매개 변수 및 매개 변수의 유형의 주문도 중요하다) 정확히 모든 방법 1의 주장?

은 할 수 있지만,이 같은 방법 하나를 오버라이드 (override) 할 필요가 : 아래 코드에서

private void method 1 (double x, double y, Color color){ 
     statements...; 
     } 

    private void method 1 (double x, double y){ 
     statements...; 
     } 

    private void method 2 (x, y){ 
     method 1(x, y); 
     statements...; 
    } 
1

: -

private void methodTwo (x, y){ 
     methodOne(x, y); //Now this will show error , because parameter not matching 
     statements...; 
    } 

당신이 다음을 3 매개 변수를 전달하지 않으려면 오류가 표시됩니다. 따라서 세 번째 매개 변수를 전달해야하며 함수 정의에서 세 번째 매개 변수를 사용하지 않고 null을 전달할 수 있습니다.

사단 솔루션 : -

private void methodTwo (x, y){ 
     methodOne(x, y,null); 
     //statements...; 
    } 

2 솔루션은 아래처럼이 methodOne 2 매개 변수를 오버로드 할 수 있습니다 : -

private void methodOne(double x, double y, Color color){ 
    //statements... same job; 
    } 

private void methodOne(double x, double y){ 
    //statements...same job; 
    } 

을 이제 다음과 같은 두 매개 변수를 사용하여 methodOne 메서드를 호출 할 때 : -

private void methodTwo (x, y){ 
    methodOne(x,y); // Now the overloaded method will call 
    //statements...; 
} 
+0

멋진 정보 감사. 다른 방법보다 한 가지 방법을 선택하는 것이 장단점이 있습니까? –

+0

예 @JessicaM. 기본적으로 그 시간에 메서드 오버로드를 선택하면 응용 프로그램이나 목적이 여러 결과 여야합니다. 모든 오버로드 된 메서드의 출력이 약간 다를 수 있습니다.하지만 귀하의 목적을 위해 1 옵션을 사용해야합니다 .Happy voteing :) –

관련 문제