IT/JAVA

객체지향 - 정보은닉(getter/setter)

트레비라임 2020. 11. 3.

자바의 접근 제한자 

private : 같은 클래스 내에서만 접근 가능

default
: 같은 패키지 내에서만 접근 가능

protected
: 같은 패키지 내 또는 자손 클래스일 경우 접근 가능

public
: 제한 없음
  외부 클래스 하위 클래스 동일 패키지 내부 클래스
public 0 0 0 0
protected X 0 0 0
선언되지 않음
(default)
X X 0 0
private X X X 0

 

 

getter/setter ?

객체지향 프로그래밍의 특성 중 정보 은닉(Hiding information)을 가장 잘 보여주는 방식입니다.

데이터를 외부에서 접근하지 않도록 막고, 메서드를 통해서 데이터에 접근하도록 한다.

클래스의 멤버 변수를 private로 접근 제한자를 설정한 후 getter/setter를 통해 멤버 변수의 값을 변경, 호출하게 된다.

이렇게 프로그래밍하는 이유는 객체의 무결성을 보장하기 위해서이다.

 

예를 들어 Person이라는 클래스에 weight(몸무게)라는 필드가 존재할 때 

weight는 0보다 작을 수 없으나, 

외부에서 직접적으로 접근할 경우,

weight에 -100이라는 값을 줌으로써 객체의 무결성이 깨지는 일이 발생합니다.

 

이를 방지하기 위해,

필드를 private로 만들어 외부의 접근을 제한한 후,

Setter를 사용해 전달받은 값을 내부에서 가공 필드에 넣어주는 방식을 사용하고

 

마찬가지로 필드 값을 가져올 때도,

Getter를 사용해 본 필드의 값을 숨긴 채

내부에서 가공된 값을 꺼낼 수 있습니다.

 

 

1. 단축키 Alt + Shift + S를 누르고

2.Generate Getters and Setters 클릭

3. 자신이 이용하고 싶은 멤버 변수 체크 

4. Generate 클릭!

 

 

이렇게 만들어진다.

 

 

 

제 포스팅이 도움이 되셨다면

공감이나 댓글을 달아주세요. :)

짧은 댓글도 저에게 힘이 됩니다.

이웃 신청도 언제나 환영입니다. 

 

감사합니다 :D

댓글