자바의 접근 제한자
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
'IT > JAVA' 카테고리의 다른 글
자바 - 배열(Array) (0) | 2020.11.14 |
---|---|
자바 - static 정적 변수, 싱글톤 (0) | 2020.11.11 |
자바 Date, Calendar 클래스 (0) | 2020.11.06 |
객체지향 - 자바 this, this()의 역할 (0) | 2020.11.03 |
객체지향 - (클래스, 객체, 인스턴스, 생성자, 오버로딩 ) (0) | 2020.11.02 |
댓글