답변 달려고 했더니 좋은 답변이 먼저 등록되어서 스킵...

 

질문)

 

Public SimpleAdder add(int num)
{
This.num+=num;
Return this;
}
반환형이 심플애더라는 클래스명인데 인트형을 반환할때랑 무엇이 다르고 어느 때 쓰면 좋은가요?

 

 

먼저 달린 답변)

 

위 메소드만 보면, SimpleAdder 클래스는 대충 아래와 같은 코드로 구성되어 있겠군요.

 

public
class SimpleAdder {  

 

   int num = 0;   public SimpleAdder add(int num) {

      this.num += num;

      return this;  

   } 

 

   @Override 

   public String toString() { 

      return "num = " + num; 

   } 

 

   public static void main(String[] args) { 

      SimpleAdder sa = new SimpleAdder(); 

      System.out.println(sa); 

      sa.add(10); 

      System.out.println(sa); 

      sa.add(100); 

      System.out.println(sa); 

   }


반환형이 int형일 경우, 그것은 num이라는 값만 넘겨주겠다는 의미이지만, 반환형이 SimpleAdder 타입일 경우에는 SimpleAdder 객체 자체를 넘겨주겠다는 의미이므로, 객체가 가질 수 있는 모든 성질을 그대로 사용할 수 있습니다.

다시말해, SimpleAdder 객체의 num 변수 뿐만 아니라, 메소드들도 그대로 넘겨주겠다는 의미죠.

 

 

내 답변)

 

아래의 실행결과를 보고 해당 메소드가 가지는 성격을 확인해 보세요.

 

1. CLASS

 

public class test_0315_000 {
  public static void main(String[] args) {
    int a = 100;
    SimpleAdder sa = new SimpleAdder();


    System.out.println("3. test_0315_000 클래스의 main 으로 반환된 값 : " + sa.add(a));

  }
}

 

class SimpleAdder{
 
  private String num = "";

 

  // 반환형이 SimpleAdder 인 메소드 타입의 반환형 이기 때문에..

  // 기본자료형이 아닌 SimpleAdder 메소드 자체를넘김.
  public SimpleAdder add(int num){

    System.out.println("1. SimpleAdder 클래스의 add 메소드의 num : " + num);
    this.num+= num;

    return this;
  }


  // SimpleAdder 를 toString 메소드에 의해 String 형으로 반환.
  public String toString() {
    System.out.println("2. SimpleAdder 클래스의 toString 메소드의 num : " + num);
    return num;
  }
}

 

 

2. RUN

 

1. SimpleAdder 클래스의 add 메소드의 num : 100
2. SimpleAdder 클래스의 toString 메소드의 num : 100
3. test_0315_000 클래스의 main 으로 반환된 값 : 100