목차
1. public
2. protected
3. default
4. private
접근 제어자
- 접근 제어자는 해당하는 클래스나 멤버에 외부에서 접근하지 못하도록 제한하는 역할을 한다.
- 외부로부터 데이터를 보호하고 외부에 불필요한 부분을 감추기 위해서 사용된다.
- public > protected > default > private 순으로 public이 접근 범위가 넓고 private가 가장 작다.
public
- 클래스, 필드, 생성자, 메서드에 적용할 수 있다.
- 접근제한이 없다. 단어 그대로 외부에서 자유롭게 접근할 수 있다.
- 하나의 소스코드 파일에서 파일명과 동일한 public class 하나만 가질 수 있다.
잘못된 예시
하나의 소스 코드에 2개의 public class가 존재할 경우
public class Sample1 {}
public class Sample2 {}
public 클래스가 파일명과 다를 경우
Sample1.java
public class Sample2 {}
그 외에도 대소문자 구별을 해야한다.
protected
- 필드, 생성자, 메서드에 적용할 수 있다.
- 패키지와 상관없이 해당 클래스와 상속관계에 있는 자손 클래스라면 접근이 가능하며, 같은 패키지 내에서도 접근 가능하다.
default
- 클래스, 필드, 생성자, 메서드에 적용할 수 있다.
- 같은 패키지 내에서만 접근이 가능하다.
- 접근 제어자를 사용하지 않을 시 기본적으로 default가 적용된다.
예시
default class Sample {}
class Sample {}
접근제어자를 생략 시 default 접근 제어자가 적용되는 것이지 키워드로 사용하지 않는다.
private
- 필드, 생성자, 메서드에 적용할 수 있다.
- 같은 클래스에서만 접근 가능하다.
- 만약 외부에서 접근하려면 해당 클래스에 getter,setter 메서드를 만들어 접근해야 한다.