반응형
Getter / Setter
- 클래스의 인스턴스 변수 한 개의 값을 가져올 때(Getter) 혹은 저장 할 때(Setter) 사용하는 함수
- 일반적으로 Getter/Setter를 사용 할 때는 get변수이름 혹은 set변수이름으로 정의해서 사용
- 데이터 타입이 Boolean일 경우, getter함수는 get이 아닌 is로 하는 것이 관례적
- 인스턴스 변수의 접근 제한자를 private로 설정하여 직접적인 값의 접근을 방지
- 올바르지 않은 값 입력을 방지 할 때 사용
- Getter/Setter 메소드를 통해 간접적 데이터 접근 허용
// Getter/Setter 데이터 접근/저장 예시
public class GetterSetter {
private int Num;
public void setNum(int Num) {
this.Num = Num;
if (Num < 0) {
this.Num = 0;
}
}
public int getNum() {
return Num;
}
}
public class mainClass {
public static void main(String[] args) {
GetterSetter gs = new GetterSetter();
gs.setNum(10);
System.out.println( gs.getNum() ); // 10
}
}
인스턴스 변수의 접근제한자를 private를 하는 이유
- 직접적인 값의 변경을 막을 수 있음
- Setter 메소드를 통해 데이터 저장 유도
Setter 메소드를 통해 데이터를 저장하는 이유
- 올바르지 않은 데이터의 저장을 방지 할 수 있음
- 예) 위의 소스 코드에서 음수가 들어 왔을 경우 조건문을 통해 0의 값으로 줄 수 있음
Getter 메소드를 통해 데이터를 호출하는 이유
- 인스턴스 변수의 데이터 정보 은닉
- getter 메소드만 선언하여 데이터의 접근을 제한
이클립스를 통해 Getter/Setter를 편하게 설정해보자
- 직접 Getter/Setter 메소드를 정의하여 사용하는 방법도 있지만 이클립스 자체 기능에서도 제공 함
- 단, Getter/Setter의 기능을 하는 메소드가 있을 경우 생성되지 않음
이클립스 Getter/Setter 메소드 설정
1. Getter/Setter 메소드가 없는 클래스 내에서 마우스 오른쪽 클릭
2. Source - Generate Getters and Setters...
3. 데이터를 호출/저장 할 인스턴스 변수 선택
4. Generate
- Getter/Setter 메소드 자동 생성
만약 Getter/Setter 메소드가 있다면?
- 에러 출력
반응형