📚 참고
자바의 정석 기초편 (객체지향개념만)

 

 

 

 

 

 

 

 

 

 

캡슐화와 접근 제어자

 

  • 접근 제어자를 사용하는 이유
    • 외부로부터 데이터를 보호하기 위함
    • 직접 접근을 막고 메서드를 통한 간접 접근만 허용
    • 외부에는 불필요하고 내부적으로만 사용되는 부분을 감추기 위함
    • 접근 제어자의 범위를 최대한 좁혀놓고, 필요 시 확장하는게 좋은 방법

 

 

 

 

 

 

 

예제 1

 

public class Time {
    public int hour;
    public int minute;
    public int second;
}
Time t = new Time();
t.hour = 25;

 

  • 외부에서 해당 데이터에 자유롭게 접근할 수 있다.

 

 

 

 

 

 

 

예제 2

 

public class Time {
    private int hour;
    private int minute;
    private int second;
    
    public int getHour() { return hour; }
    
    public void setHour(hour) {
    	if (isNotValidHour(hour)) return;
        this.hour = hour;
    }
    
    // 해당 클래스에서만 사용하는 메서드 => 외부에 노출시킬 필요 없음
    private boolean isNotValidHour(int houre) {
        return hour < 0 || hour > 23;
    }
}
Time t = new Time();
t.hour = 25;	// 🚩에러
t.setHour(25);	// ✅성공

 

  • hour 변수의 접근 제어자를 private으로 설정했으므로 외부에서 직접 접근을 할 수 없다.
  • 접근 제한이 없는 setHour 메서드를 통해 세팅값을 검증한 후, 멤버변수에 값을 세팅한다.