객체지향의 언어의 또다른 속성은 은닉성이다. encapsulation(캡슐화)이라고도 한다.
다음과 같은 코드가 있을 때 House 클래스는 안전한 클래스라고 할 수 있을까?
정답은 아니다. House의 경우 클래스 밖에서도 멤버변수를 호출할 수 있으며 변경도 가능하기 때문에
안전하다고 할 수 없다. 그러나 어디서든 접근을 할 수 있기 때문에 호출에 편리함은 있다.
접근을 경우에 따라 유연하게 제어하기 위한 4가지 장치가 있다.
1. public : 어디서든 접근이 가능하다.
2. private : 클래스 내에서만 접근이 가능하다.
3. protected : 같은 package내의 상속을 받은 클래스까지 접근이 가능하다.
4. (default) : 같은 package내에서 접근이 가능하다.
public과 private가 가장 많이 쓰인다.
그렇다면 호출은 가능하나 변경을 불가능 하게 하려면 어떻게 해야할까?
다음과 같이 멤버변수는 private로 지정하고 그 변수를 호출할 수 있는 메소드는 public으로 지정하면
변수는 어디서든지 메소드로 호출할 수 있지만 private로 지정됐기 때문에 마음대로 변경할 수는 없다.
이렇게 getter와 setter를 만들어주면 어디서든지 메소드를 사용하여 변수를 호출할 수 있고 변경할 수 있다.
'JAVA 기초 정리' 카테고리의 다른 글
JAVA 객체지향과 다형성 (0) | 2020.03.06 |
---|---|
JAVA Node로 LinkedList 구현하기 (0) | 2020.03.05 |
JAVA 객체지향과 상속성 (0) | 2020.03.04 |
JAVA 클래스와 사용 방법 (0) | 2020.03.04 |
JAVA 반복문 사용하기 (0) | 2020.03.04 |
댓글