Java - 클래스 - Getter/Setter (객체의 데이터 접근, 저장)

반응형

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 메소드가 있다면?

  • 에러 출력

 

 

반응형