정보은닉 ( Information Hiding )
- 여기서의 정보는 인스턴스 변수를 의미.
- 정보를 은닉한다는 것은 인스턴스 변수를 외부에서 보지 못하도록 숨긴다는 말과 같다.
- 숨기는 이유
-> 클래스 사용자가 잘못된 값을 인스턴스 변수에 저장하지 않도록하기 위해서
예를 들어, 음수이면 인스턴스 변수에 값이 저장되지 않아야 할 때, 인스턴스 변수가 외부에서
보인다면(접근가능하다면) 음수 값도 저장될 수 있다.
- 이러한 클래스의 설계를 ‘정보 은닉’ 이라 한다.
접근 수준 지시자(Access-level Modifiers)
- 클래스 정의 대상 : public, default 선언 가능
- 인스턴스 변수와 메소드 대상 : public, protected, private, default 선언가능
- 클래스 정의 대상의 public과 default 선언이 갖는 의미
-> public : 어디서든 인스턴스 생성이 가능하다.
-> default : 동일 패키지로 묶인 클래스 내에서만 인스턴스 생성을 허용한다.
- 인스턴스 멤버 대상의 public과 default 선언이 갖는 의미
-> public : 어디서든 접근 가능하다.
-> default : 동일 패키지로 묶인 클래스 내에서만 접근이 가능하다.
- 인스턴스 멤버 대상의 private 선언이 갖는 의미
-> private : 동일 클래스에 정의된 메소드 에서만 접근 가능.
- 인스턴스 멤버 대상의 protected 선언이 갖는 의미
-> protected : default 선언이 허용하는 접근 + 상속관계의 다른 클래스에서의 접근도 허용한다.
※ 인스턴스 멤버를 대상으로 하는 public, protected, private, default 선언에 대한 정리
지시자 |
클래스 내부 |
동일 패키지 |
상속받은 클래스 |
이외의 영역 |
private |
O |
X |
X |
X |
default |
O |
O |
X |
X |
protected |
O |
O |
O |
X |
public |
O |
O |
O |
O |
캡슐화 (Encapsulation)
- 하나의 목적을 이루기 위해 관련 있는 모든 것을 하나의 클래스에 담아 두는 것
- 클래스를 적절히 캡슐화시키면 프로그램이 간결해진다.
- 하나의 클래스 혹은 포함관계를 통하여 캡슐화할 수 있다.
[참고자료]
윤성우의 열혈 Java 프로그래밍
'Java > 기본' 카테고리의 다른 글
자바(Java) 메소드 오버로딩, 메소드 오버라이딩 (0) | 2020.02.25 |
---|---|
자바(Java) 클래스 변수, 클래스 메소드 (0) | 2020.02.24 |
자바(Java) 흐름 제어 (0) | 2020.02.23 |
자바(Java) 연산자 (0) | 2020.02.23 |
자바(Java) final 예약어, 상수, 형 변환 (0) | 2020.02.22 |