해당 글은 '자바의 정석 기초편'을 보고 작성되었습니다.
이전 포스팅에서 접근 제어자와 그 외의 제어자에 대해 알아보았다. 해당 포스팅에서는 접근 제어자를 왜 사용해야하는지 자세히 알아볼 것이고, 객체지향의 관점에서 캡슐화 또한 공부해 볼 것이다
우리가 프로그래밍을 하면서 접근 제어자를 사용했던 이유는, 클래스에 선언된 데이터를 외부로 부터 보호하기 위해서이다. 반대로 생각해서, 내부 작업을 위해 사용되는 멤버 변수나 부분작업을 처리하기 위한 메서드 등의 멤버들을 클래스 내부에 감추기 위해서도 사용한다.
public class Time {
private int hour;
private int minute;
private int second;
public int getHour() {
return hour;
}
public void setHour(int hour) {
if(hour < 0 || hour > 23) return;
this.hour = hour;
}
public int getMinute() {
return minute;
}
public void setMinute(int minute) {
if(minute < 0 || minute > 59) return;
this.minute = minute;
}
public int getSecond() {
return second;
}
public void setSecond(int second) {
if(second < 0 || second > 59) return;
this.second = second;
}
}
해당 클래스에서 보이는대로, get()는 멤버 변수의 값을 반환하는 일을 진행,
set()는 매개변수에 지저된 값을 검사해 조건에 맞는 값만 멤버 변수의 값을 변경하도록 작성되었다.
만약 해당 클래스가 상속을 통해 확장되어야 할 클래스라면, 멤버에 접근 제한을 주지만 자손클래스에서 접근하는 것이 가능하도록 protected를 사용해야 한다.