접근자(Getter)와 수정자(Setter)
우리가 현재까지 배웠던 예시에서는 필드에 별도로 접근제어자를 붙이지 않는 default 접근제어자를 사용을 했었습니다.
따라서 동일 패키지 내 다른 클래스에서 .
을 통해 바로 필드에 접근하고, 필드를 수정할 수 있었습니다.
public class Counter {
int count;
}
public class Main {
public static void main(String[] args) {
Counter counter = new Counter();
int count = counter.count; // 접근
counter.count = 1; // 수정
}
}
하지만, 자바 개발자들 사이에서는 클래스 내부의 변수를 밖에서 사용하지 않도록 하는 관례가 있습니다. 정보 은닉과 캡슐화를 통해 클래스의 내부 구현을 외부로부터 감추고, 안전하게 데이터를 다룰 수 있기 위함입니다.
따라서 prviate 접근제어자로 이 필드에 외부에서 접근, 사용을 막은 후, 외부에서 이 멤버변수에 접근하고 조작이 필요한 경우는 getter와 setter 메서드를 만들어 사용합니다.
Getter 메서드
Getter는 클래스의 private 멤버 변수의 값을 외부에서 읽을 수 있도록 하는 메서드입니다.
메서드의 이름은 "get"으로 시작하고, 그 뒤에 변수명을 CamelCase로 붙입니다.
반환 형식은 해당 멤버 변수의 자료형과 일치합니다.
public class Counter { private int count; // Getter 메서드 public int getCount() { return count; } }
Setter 메서드
Setter는 클래스의 private 멤버 변수의 값을 외부에서 수정할 수 있도록 하는 메서드입니다.
메서드의 이름은 "set"으로 시작하고, 그 뒤에 변수명을 CamelCase로 붙입니다.
일반적으로 파라미터를 받아 해당 변수에 값을 할당합니다.
public class Counter { private int count; // Setter 메서드 public void setCount(int count) { this.count = count; } }
핵심은 위 두 메서드를 항상 구현하는 것이 아닌, 외부에서 필요로 할 경우만 구현하는 것입니다. 접근만 필요하고 수정이 필요하지 않은 경우 Getter 만 사용할 수 있고, 반대의 상황의 경우 Setter 만 구현할 수도 있습니다. 이를 통해 외부에서 내부의 멤버 변수를 함부로 사용하는 일을 막을 수 있습니다.
Last updated