2014-02-26 4 views
-2

반환 유형이 클래스 인 메소드의 리턴을 어떻게 작성합니까? 이것은 두 숫자의 합을 찾는 방법입니다. number 객체는 다른 클래스에서 만들어지며 'other'매개 변수에 추가되어야합니다. 나는이 방법을 제대로 만들지 모르겠다. 유형이 클래스 인 경우 올바른 반환 값을 어떻게 작성 하시겠습니까?메서드에서 반환 값으로 클래스?

public class Number { 
    private double a; 
    private double b; 

    public Number (double _a, double _b) { 
      a = _a; 
      b = _b; 
    } 

    public Number sum(Number other) { 
      a = this.a + other.b; 
      b = this.b + other.b; 
      return ; 
    } 
} 
+4

'_a'과'_b'의 이름을 변경하는 것이 좋습니다. 'a'와'b'를 사용하고'this.a = a; '라고 쓸 수 있습니다. – Maroun

+1

비록 질문이 매우 기초적이며 OP는 기본적인 튜토리얼을 읽었을 때 대답을 찾지 만, 질문이 명확합니다. 명확하고 잘 쓰려면 +1하십시오. – Maroun

답변

4

은 어떻게 클래스와 반환 타입을 가진 메소드의 반환을 만들려면 어떻게해야합니까?

다른 참조를 사용하는 것과 같은 방법입니다.

return this; 

그러나,이 당신의 메소드를 호출 객체를 돌연변이, 기존에 주어진 번호를 추가입니다 ... : 귀하의 경우

당신은 단지에 코드를 변경할 수 있습니다 조금은 StringBuilder.append입니다.

나는이 두 수를 변경할 수 있지만, 대신 새로 생성하지 않는 것이 좋습니다 것입니다 의심 :

public Number sum(Number other) { 
    return new Number(this.a + other.a, this.b + other.b); 
} 

가 (현재 전혀 other.a를 사용하지 않는,하지만 난 그게 오타했다 가정합니다.)

다른 방법과 다른 방법으로, 유형을 불변으로 만들 수 있습니다.은 일반적으로 일을 쉽게 추론합니다. 그러려면 final 필드를 만들고 final 클래스로 만드십시오. 나는 개인적으로 메서드 이름을 plus으로 변경할 것이지만 그것은 개인적인 취향의 문제입니다.

0

자바에서는 클래스 유형의 객체 만 반환 할 수 있습니다. 당신의 관심사는 (서브 클래스 포함) 합계 메서드에 전달 된 것과 동일한 유형을 반환하는 경우

public Number sum(Number other,Number nobj) { 
     a = nobj.a + other.b; 
     b = nobj.b + other.b; 
     return nobj; 
} 
0

, 당신은 인수를 검사하고 해당 유형 중 하나를 반환 할 수 있습니다.

뭔가처럼 ... 내가 너무 인수 없음의 생성자를 추가했다

public class Number { 
    private double a; 
    private double b; 

    private Number() {} 
    public Number (double _a, double _b) { 
      a = _a; 
      b = _b; 
    } 

    public Number sum(Number other) throws Exception { 
      a = this.a + other.b; 
      b = this.b + other.b; 
      Number n = other.getClass().newInstance(); 
      n.a = a; 
      n.b = b; 
      return n; 
    } 
} 

참고.

관련 문제