자바에서는 객체 지향 프로그래밍(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 | 필드, 생성자, 메서드 | 같은 클래스에서만 접근 가능 |
'STUDY > Java' 카테고리의 다른 글
Java | Primitive Types ( + Overflow/Underflow ) (0) | 2020.08.24 |
---|---|
Java | 추상클래스(abstract class) / 인터페이스(Interface) (0) | 2020.05.18 |
Java | 객체 지향 프로그래밍(OOP : Object Oriented Programming)의 주요 개념 (0) | 2020.05.14 |
Java | 컬렉션 프레임워크 Collection Framework ( List / Set / Map ) (0) | 2020.05.12 |
Java | 배열 오름차순 / 내림차순 정렬하기 ( Arrays.sort() ) (0) | 2020.04.27 |