설정(setter) 메소드

설정 메소드(setter method)

설정 메소드는 세터 메소드(setter method)라고 하며, 메소드 중에서 멤버 필드의 값 설정을 전담하는 메소드를 말한다. 일반적으로 멤버 필드 하나당 한 개의 설정 메소드가 필요하다.

형태

String name에 대한 setter method는 다음과 같다.

String name;
void setName(String name){
    this.name = name;
}

int score에 대한 setter method는 다음과 같다.

int score;
void setScore(int score){
    this.score = score;
}

데모 1 : 설정 메소드가 존재하는 클래스

class Student {
    String name;
    int score;
    
    void setName(String name){
        this.name = name;
    }
    void setScore(int score){
        if(score < 0 || score > 100) {
            return;
        }
        this.score = score;
    }
    
    void print(){
        System.out.println("이름 : "+this.name);
        System.out.println("점수 : "+this.score+"점");
    }
}

public class MemberMethodExample01 {
    public static void main(String[] args){
        Student stu1 = new Student();
        stu1.name = "홍길동";
        stu1.score = 50;
        stu1.print();
        
        stu1.score = -50;//차단할 수 없음
        stu1.print();
        
        Student stu2 = new Student();
        stu2.setName("김선달");
        stu2.setScore(80);
        stu2.print();
        
        stu2.setScore(-80);//차단
        stu2.print();
    }
}

점수 설정 메소드는 다음과 같다.

void setScore(int score){
    if(score < 0 || score > 100) {
        return;
    }
    this.score = score;
}

점수가 0점 미만이거나 100점을 초과하는 경우에는 return이라는 키워드를 만나게 되는데, return은 다음 두 가지의 의미를 가진다.

  • 남은 코드 여부와 관계없이 메소드의 실행을 중지한다.

  • 특정 값을 반환한다.

하지만 void 라는 키워드는 반환이 없음을 나타내는 키워드이기 때문에 return만 사용하여 종료 효과만 발생시켜 차단되도록 구현하였다.

특징

장점

  • 조건 설정을 통한 값의 필터링이 가능하다.

단점

  • 변수 하나 당 한 개의 세터메소드를 생성해야 하기 때문에 전체 코드가 길어진다.

결론

설정 메소드는 접근 제한과 같이 사용하면 좀 더 멤버 필드를 효율적으로 관리할 수 있다. 해당 클래스의 인스턴스를 이용하여 작업을 할 때 값 설정에 관련된 강제성을 부여할 수 있으므로 매우 유용하며 적극적으로 사용해야 한다.

최근 lombok 등 자동와 도구들에 의해 사용이 매우 간편해지는 추세이다.

Last updated