getter 와 setter.

티스토리 메뉴 펼치기 댓글수0

Dev Center/JAVA start

getter 와 setter.

seanhigher
댓글수0
자바를 처음 배울때 게터와 세터라고 말을 하는데, 이것이 무엇을 이야기 하는지 고이장히 궁금해 했었다. 다들 아무렇지도 않게, 당연하게 사용하고 있는 이것. 무엇이고, 왜 써야하는걸까?


맴버를 변수를 지켜라!
클래스를 새로 만들게 되면, 맴버 변수도 만들게 된다. 그리고 그 맴버 변수는 '닷' 연산자를 통해 접근이 가능하다.

class 사람 {
    int 키 = 170;
    int 몸무게 = 60;
}

이 클래스의 키와 몸무게를 사용하기 위해서는 '사람.키' 와 '사람.몸무게' 라는 이름으로 접근이 가능하다. 하지만, 이렇게 직접적으로 접근을 하게 될 경우에는 문제가 발생하게 된다. 사람의 클래스에서 사용되는 키와 몸무게는 위에서 명시간 상수가 일정하게 유지되어야 함에도 불구하고 아무나 접근을 해서 변경이 가능하다는 것이다. 보통의 사람인 키 = 170, 몸무게 = 60 의 사람을 만들려고 사람 객체를 생성했는데, 의도하지 않은 키 = 20, 몸무게 = 80 의 사람 객체가 만들어 질 수 있다는 것이다. 그래서 일반적으로 클래스의 맴버 필드에는 클래스에서만 접근하여 수정이 가능한 'private' 로 선언을 하게 된다.

class 사람 {
    private int 키 = 170;
    private int 몸무게 = 60;
}

하지만 이렇게 되면 객체에서는 키와 몸무게를 변경할 수 없다는 것이다. 이것을 가능하게 해주는 것이 케터와 세터 메소드의 사용이다.


게터와 세터
게터와 세터는 전혀 특별한 것이 아니다. 그냥 일반적인 클래스안에 포함된 메소드이다. 단지 그 열할이 맴버 필드의 변수를 변경해 주는 기능을 갖음으로써 클래스의 맴버 필드를 보호하는 것이다.

class 사람 {
     private int 키 = 170;
     private int 몸무게 = 60;
    public int get키() {
        return 키;
    }
    public void set키(int a) {
        키 = a;
    }
}

'get키()' 가 게터가 돠고 'set키'가 세터 메소드가 되는 것이다. 위의 클래스에서는 키를 변경하기 위해 '사람.키' 라는 이름으로 접근을 할 수 없고, 사람의 객체를 생성한 후 세터 메소드를 통해서만 접근이 가능하다.

사람 people = new 사람();
people.set키(180);

사람의 키를 알아내기 위해서는 게터 메소드를 통해 객체의 값을 가져올 수 있다.

System.out.println(people.get키());

어떻게 보면 굉장히 불필요한 작업이라고도 볼 수 있겠지만, 개발자의 의도를 표현하면서, 사용자에게 또 다른 가능성을 부여하는 발전적인 기능이라고 할 수 있다.

맨위로