접근 제어자를 사용하는 이유
public class Time {
public int hour;
public int minute;
public int second;
}
Time t = new Time();
t.hour = 25; // 멤버 변수에 직접 접근
public class Time {
private int hour; //외부 접근 막는다
private int minute;
private int second;
public int getHour() { return hour; } //메서드에서 iv에 접근(간접 접근)
public void setHour(int hour) {
if (hour < 0 || hour > 23) return; // 값을 보호 (if 문이 1 이 되어서 return 문을 만나서 빠져나가니까 hour 의 값이 바뀌지 않음 (private 의 값))
this.hour = hour;
Time t = new Time();
t.hour = 25; // 멤버 변수에 직접 접근
예제 TimeTest
class Time {
int hour; // 0~23 사이의 값을 가져야 함
int minute;
int second;
}
public void setHour(int hour) {
if (isNotValidHour(hour)) return; // 값을 보호 (if 문이 1 이 되어서 return 문을 만나서 빠져나가니까 hour 의 값이 바뀌지 않음 (private 의 값))
this.hour = hour;
}
private boolean isNotValidHour(int hour) {
// 매개변수로 넘겨진 hour 가 유효한지 확인해서 알려주는 메서드
// 내부에서 쓰니까 public 일 필요가 없음 (테스트 범위가 줄어듦)
return hour < 0 || hour > 23;
public class TimeTest {
public static void main(String[] args) {
Time t = new Time();
t.setHour(21); //
System.out.println(t.getHour())
t.setHour(100);
System.out.println(t.getHour()) // 100은 유효한 값이 아니라서 hour 의 값이 변경되지 않아서 21이 찍힘
}
}
잘 봤습니다. 좋은 글 감사합니다.