[Java] 캡슐화(encapsulation), 접근 제어자(private, default, protected, public)
Programming/java 2017. 5. 15. 17:18[Java] 자바 캡슐화(encapsulation), 접근 제어자(private, default, protected, public)
캡슐화(encapsulation)
- 어쩌다 유지보수를 하는 다른 개발자가 인스턴스 변수나 메서드,
이너 클래스에 접근해서 값을 마음대로 저장시킨다면 클래스를
정의(추상화)한 보람이 없어진다.
- 캡슐화는 이런 경우를 막고자 고안된 방법으로, 추상화를 무너뜨리지 않게
만드는 문법이다. 즉 클래스가 원래 목적에 맞게 동작할 수 있도록 클래스 멤버
(변수, 메서드, 이너 클래스)의 접근을 제한하는 것이다.
- 추상화 : 어떤 목적에 맞게 동작하도록 클래스 안에 변수나 메서드를 정의한 것을 의미
I 캡슐화(encapsulation) : modifier 종류
- private :
클래스 멤버만이 접근 가능
- (default) : 아무것도 붙이지 않는 것.
클래스 멤버 + 같은 패키지의 클래스
- protected :
클래스 멤버 + 같은 패키지의 클래스 + 자식 클래스
- public :
모든 접근 허용
package step11.ex1;
import step11.ex1.*;
II 캡슐화(encapsulation) : 패키지 멤버 클래스(일반 클래스)에 붙일 수 있는 modifier 종류 II
- 패키지 멤버 클래스 :
소스 파일 가장 밖에 선언한 클래스이다.
일반적으로 작성하는 클래스이다.
- (default) : 아무것도 붙이지 않는 것.
같은 패키지의 클래스
- public :
모든 접근 허용
III 캡슐화(encapsulation) : 중첩 클래스(nested class) / 내부 클래스(inner class)
클래스 안에 선언된 클래스를 "중첩 클래스(nested class)" 또는 "내부 클래스(inner class)"라고 부른다.
inner 클래스는 클래스 안에 선언되기 때문에 바깥 클래스의 멤버이다.
따라서 클래스의 멤버인 변수나 메서드와 똑같이 modifier를 사용할 수 있다.
'Programming > java' 카테고리의 다른 글
[Java] 컬렉션 - [Map] HashMap(java.util.HashMap) (2) | 2017.05.16 |
---|---|
[Java] 컬렉션 클래스 - [Set] HashSet (java.util.Hashset) (0) | 2017.05.16 |
[Java] super 키워드의 사용 (0) | 2017.05.15 |
[Java] 상속과 super() 메서드 (0) | 2017.05.15 |
[Java] final 명령어 (public static final ...) (0) | 2017.05.15 |