7-22 캡슐화(Encapsulation), 접근 제어자
접근 제어자를 사용하여 객체를 캡슐화 가능
접근 제어자를 사용하는 이유(캡슐화 하는 이유)
- 외부로부터 데이터를 보호하기 위해서
- 외부에는 불필요한, 내부적으로만 사용되는 부분을 감추기 위해서
예제 1 - 외부로부터 데이터를 보호
public class Time{
// 멤버 변수의 접근 제어자를 private으로 하여 외부에서 직접 접근하지 못하도록 한다.
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;
}
// 매개변수로 넘겨진 hour가 유효한지 확인해서 알려주는 메서드
}
위와 같이 코드를 작성하면 다음과 같이 멤버 변수에 직접 접근할 수 없다.
Time t = new Time();
t.hour = 25; // 에러!! 멤버변수에 직접 접근 불가능
t.setHour(25); // 가능. 메서드가 호출되어도 조건문이 있기 때문에 안전하게 값을 보호 한다.
cf) alt+shift+M : 메서드 추출
예제 2 - hour < 0 || hour > 23 부분을 메서드 추출하여 가독성 좋은 코드로 변환
(isNotValidHour는 public일 필요 없으므로 private으로 하는 것이 좋다.)
class Time {
private int hour;
private int minute;
private int second;
public int getHour(){ return hour; };
public void setHour(int hour){
if(isNotValidHour(hour)) return;
this.hour = hour;
}
// 매개변수로 넘겨진 hour가 유효한지 확인해서 알려주는 메서드
private boolean isNotValidHour(int hour) {
return hour < 0 || hour > 23;
}
}
public class practice {
public static void main(String[] args){
Time t = new Time();
t.setHour(21);
System.out.println(t.getHour());
}
}
Author And Source
이 문제에 관하여(7-22 캡슐화(Encapsulation), 접근 제어자), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@oyeon/7-22-캡슐화저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)