본문 바로가기
JAVA 기초 정리

JAVA 객체지향과 은닉성

by kjwkjw 2020. 3. 4.

객체지향의 언어의 또다른 속성은 은닉성이다. encapsulation(캡슐화)이라고도 한다.

 

다음과 같은 코드가 있을 때 House 클래스는 안전한 클래스라고 할 수 있을까?

정답은 아니다. House의 경우 클래스 밖에서도 멤버변수를 호출할 수 있으며 변경도 가능하기 때문에

안전하다고 할 수 없다. 그러나 어디서든 접근을 할 수 있기 때문에 호출에 편리함은 있다.

 

접근을 경우에 따라 유연하게 제어하기 위한 4가지 장치가 있다.

 

1. public : 어디서든 접근이 가능하다.

2. private : 클래스 내에서만 접근이 가능하다.

3. protected : 같은 package내의 상속을 받은 클래스까지 접근이 가능하다.

4. (default) : 같은 package내에서 접근이 가능하다.

 

public과 private가 가장 많이 쓰인다.

 

다음과 같이 private로 멤버변수를 선언하면 클래스 밖에서 호출이 불가능하다.

그렇다면 호출은 가능하나 변경을 불가능 하게 하려면 어떻게 해야할까?

 

다음과 같이 멤버변수는 private로 지정하고 그 변수를 호출할 수 있는 메소드는 public으로 지정하면

변수는 어디서든지 메소드로 호출할 수 있지만 private로 지정됐기 때문에 마음대로 변경할 수는 없다.

 

이렇게 getter와 setter를 만들어주면 어디서든지 메소드를 사용하여 변수를 호출할 수 있고 변경할 수 있다.

 

다음과 같이 변수에 접근하여 변경할 수 있다.
protected로 선언됐기 때문에 옳은 코드이다.

 

'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

댓글