본문 바로가기

JAVA의 정석

(객체part2) 4. 접근 제어자와 캡슐화

우선 접근 제어자부터 알아보자.  접근 제어자를 사용하는 이유는 외부로부터 데이터를 보호하기 위해서이다.

 

접근 제어자 범위
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로 변경한 후 프로그램을 

 

실행해보자.

 

 

이런 식으로 프로그램을 짜면, 보다 더 데이터를 보호하고, 검수하면서 짤 수 있기 떄문에 더욱 효율적이고 안전하게 짤 수 있게 된다. 

 

 

 일반적으로 접근 제어자의 범위는 좁을 수록 좋다 . 좁혀놨다가 필요 시에 넓혀가는 방식으로 이어가는 것을 권장한다.