/ JAVAJUNGSUK

Ch7-22. 캡슐화

자바의 정석 기초편

0. 목차



Chapter7. 객체지향 프로그래밍Ⅱ

Ch7 - 22. 캡슐화와 접근제어자



Ch7 - 22. 캡슐화와 접근제어자


▶ 접근제어자를 사용하는 이유?

▷ 외부로부터 데이터를 보호(캡슐화)하기 위해서
public class Time {
	public int hour; // 범위 : 0 ~ 23
	public int minute; // 범위 : 0 ~ 59
	public int second; // 범위 : 0 ~ 59
}

class TimeTest {
	public static void main(String[] args) {
		Time time = new Time();
		time.hour = 100; // 범위 초과 방지 못함
	}
}



▷ 외부에는 불필요한, 내부적으로만 사용되는, 부분을 감추기 위해서
  • 접근제어자의 범위는 좁은 게 좋음
  • 필요 시 점점 넓혀가는 게 좋음

▶ 실습

▷ 조건문 기능 분리
  • 메서드 추출 : alt + shift + M
package baek;

public class Time {
	private int hour;
	private int minute;
	private int second;


	public void setHour(int hour) {
		if (isNotValidHour(hour)) return;
		this.hour = hour;
	}

	// 매개변수로 넘겨진 hour가 유효한지 확인해서 알려주는 메서드, 내부에서만 사용 private
	private boolean isNotValidHour(int hour) {
		return hour < 0 || hour > 23;
	}
	
	public int getHour() { return hour; }
}

class TimeTest {
	
	public static void main(String[] args) {
		Time time = new Time();
		time.setHour(20);
		System.out.println(time.getHour());
	}
}