자바의 정석 - 캡슐화

Yohan·2024년 1월 21일
0

캡슐화와 접근 제어자

  • 접근 제어자를 사용하는 이유?
    • 외부로부터 데이터를 보호하기 위해서
    • 외부에는 불필요한, 내부적으로만 사용되는, 부분을 감추기 위해서
public class Time {
	private int hour;
    private int minute;
    private int second;
    
    // private으로 외부의 접근을 막아놓고
    // 메서드를 통해 조건에 맞는 값만 허용하게 만듦 (간접접근허용)
    public int getHour() { return hour; }
    public void setHour(int hour) {
    	if (hour < 0 || hour > 23 ) return; // 범위에 속하면 다시 return (허용x)
        this.hour = hour; // 범위에 포함되면 hour에 저장되어 허용 o
    }
}
class Time {
	private int hour; // 0 ~ 23 사이의 값을 가져아함
    private int minute;
    private int second;
    
    public void setHour(int hour) { // 값을 바꿈
    	if (ifVaildHour(hour)) return;
    	
        this.hour = hour;
    }
    
    // 매개변수로 넘겨진 hour가 유효한지 확인해서 알려주는 메서드
    private boolean isVaildHour(int hour) {
    	return hour < 0 || hour > 23;
    }
    public int getHour() { return hour; }; // 값을 읽음
    
 }
 
 public class TimeTest {
 	public static void main(String[] args) {
    	Time t = new Time();
        t.setHour(21); // hour를 21로바꿈
        System.out.println(t.getHour()); // 21출력
        t.setHour(100); // hour를 100으로 바꿈
        System.out.println(t.getHour()); // 21출력 (100은 범위에 맞지않아 바뀌지 않았음) 
    }
 }
  • 접근제어자는 범위를 최대한 줄일 수 있으면 좋음 !!
profile
백엔드 개발자

0개의 댓글