본문 바로가기

STUDY/Java

Java | 접근 제어자/접근 제한자 ( Access Modifier )

 자바에서는 객체 지향 프로그래밍(OOP)의 가장 큰 특징 중 하나인 캡슐화, 정보은닉(data hiding)을 위해 접근 제어자/접근 제한자(Access Modifier)를 제공합니다. 

 

1. public

 public은 말 그대로 어디에서든 접근이 가능합니다. 같은 클래스, 부모클래스, 자식클래스 그리고 다른 패키지에서도 접근이 가능합니다.

 

2. default

 default는 기본값으로, 아무런 접근 제어자를 명시하지 않는 경우 자동으로 default가 적용됩니다. default는 같은 패키지에 존재하는 모든 멤버가 접근 가능합니다. (외부 패키지에서 접근 불가)

 

3. protected

 protected는 부모 클래스(parent class / super class)에 대해 public과 같은 효과를 발휘합니다. 하지만 외부 패키지의 자식 클래스(child class / sub class)가 아닌 일반 클래스는 접근할 수 없습니다. 

 protected를 지정한 멤버는 동일 클래스, 동일 패키지, 외부의 자식 클래스에서만 접근이 가능합니다.

 

4. private

 private은 말 그대로 외부로 노출되지 않습니다. 오직 동일 클래스에서만 접근이 가능합니다. 만약 외부에서 접근이 가능하게 하고싶다면 getter와 setter를 이용해 접근할 수 있도록합니다.

 

 

 

접근 제어자 적용 대상 접근 범위
public 클래스, 필드, 생성자, 메서드 모두 가능(외부 패키지도 가능)
default 클래스, 필드, 생성자, 메서드 같은 패키지에 소속된 멤버
protected 필드, 생성자, 메서드 같은 클래스, 같은 패키지, 자식 클래스
(외부 패키지의 자식 클래스 접근 가능)
private 필드, 생성자, 메서드 같은 클래스에서만 접근 가능