우선 접근 제어자부터 알아보자. 접근 제어자를 사용하는 이유는 외부로부터 데이터를 보호하기 위해서이다.
접근 제어자 | 범위 |
private | 같은 클래스 내에서만 접근이 가능하다 . |
(default) | 같은 패키지 내에서만 접근이 가능하다. |
protected | 같은 패키지 내에서, 그리고 다른 패키지의 자손 클래스에서 접근이 가능하다. |
public | 접근 제한이 전혀 없다. |
아래 코드는 private를 통해서 외부로부터 접근 제어를 막고 있다.
class Time {
private int hour;
private int mimute;
private int second;
}
그렇다면 어떻게 해야 위 클래스의 변수를 외부에서 접근할 수 있을까 ?
getter와 setter를 통해 간접적으로 접근하면 데이터를 보호하면서 외부로부터 간접적으로 데이터에 접근할 수 있다.
class Time {
private int hour;
private int mimute;
private int second;
public int getHour() {
return hour;
}
public void setHour(int hour) {
this.hour = hour;
}
}
이제 객체를 생성해서 getter와 setter를 통해 접근한 변수를 출력해보자 .
하지만 실제 시간은 24시간으로 이루어져있고 60분 이 되면 1시간 60초가 되면 1분으로 넘어간다. 이 부분을 고려하여,
setter에 조건문을 걸어, 시간초과시 return문으로 끝내주고 초과되지 않을 시에 설정해주는 setter로 변경한 후 프로그램을
실행해보자.
이런 식으로 프로그램을 짜면, 보다 더 데이터를 보호하고, 검수하면서 짤 수 있기 떄문에 더욱 효율적이고 안전하게 짤 수 있게 된다.
일반적으로 접근 제어자의 범위는 좁을 수록 좋다 . 좁혀놨다가 필요 시에 넓혀가는 방식으로 이어가는 것을 권장한다.
'JAVA의 정석' 카테고리의 다른 글
(객체part2 ) 6. instanceof 연산자 (0) | 2023.09.07 |
---|---|
(객체part2 ) 5. 다형성과 참조변수의 형변환 (0) | 2023.09.07 |
(객체part2) 3. 패키지 / import 문과 static import문 (0) | 2023.08.19 |
(객체part2) 2. 참조변수 super, super() (0) | 2023.08.18 |
(객체part2) 1. 상속과 포함 object 클래스 / 오버로딩과 오버라이딩 (1) | 2023.08.18 |