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