- 클래스나 일부 멤버를 공개하여 다른 클래스에서 접근하도록 함
- 객체 지향 언어의 캡슐화 정책은 멤버를 보호하는 것
private |
디폴트 |
protected |
public |
외부로 부터 완벽히 차단 |
동일 패키지에 허용 |
동일 패키지와 자식클래스에 허용 |
모든 클래스에 허용 |
*패키지 : 관련 있는 클래스 파일을 저장하는 디렉토리, 자바 으용프로그램은 하나 이상의 패키지로 구성.
- 클래스 접근 지정
- 다른 클래스에서 사용하도록 허용할지 지정
- public 클래스 : 다른 모든 클래스에게 접근 허용
- 디폴트 클래스( package-private ) : 같은 패키지의 클래스에만 접근 허용
- 멤버 접근 지정
- public 멤버 : 패키지에 관계 없이 모든 클래스에서 접근 가능
- private 멤버 : 동일 클래스에서만 접근 가능, 상속 받은 서브 클래스도 접근 불가
- protected 멤버 : 같은 패키지 내의 다른 모든 클래스에서 접근 가능, 상속 받은 서브 클래스는 다른 패키지에 있어도 접근 가능
- 디폴트(default) 멤버 : 같은 패키지 내의 다른 클래스에서 접근 가능
멤버에 접근하는 클래스 |
멤버의 접근 지정자 |
private |
디폴트 |
protected |
public |
같은 패키지의 클래스 |
X |
O |
O |
O |
다른 패키지의 클래스 |
X |
X |
X |
O |
접근 가능 영역 |
클래스 내 |
동일 패키지 내 |
동일 패키지와 자식 클래스 |
모든 클래스 |
public class Ex{
Ex(){};//디폴트 생성자
public Ex(int){};//public 생성자
//생성자 없으면 클래스 접근 지정자 따라서 기본 생성자 생성
}