접근 제어자
- 접근 제어자는 자바 제어자의 한 종류로, 사용 범위를 정의하는 역할을 한다.
- 접근 제어자는 각 대상에 대해 딱 한 번 정의할 수 있다.
- 접근 제어자는 클래스, 멤버, 생성자 앞에 위치할 수 있다.
- 아무것도 지정하지 않으면 default 접근 제어자가 자동으로 설정된다.
멤버 및 생성자의 접근 제어자
멤버 및 생성자에는 public, protected, default(package), private라는 4가지 종류의 접근 제어자를 사용할 수 있다.
접근 제어자 |
접근 제한 범위 |
public |
접근 제한 없음 |
protected |
동일 패키지 + 다른 패키지의 하위 클래스에서 접근 가능 |
default |
동일 패키지 내에서만 접근 가능 |
private |
동일 클래스에서만 접근 가능 |
사용 가능 범위 : public > protected > default > private |
클래스의 접근 지정자
- 클래스에서는 public, default 2가지 종류의 접근 지정자만 사용할 수 있다.
- public class : 다른 패키지에서 임포트하여 사용 가능
- class : 동일 패키지에서만 사용 가능
public class PublicClass { // public 클래스
...
}
class DefaultClass { // default 클래스
}
클래스 접근 지정자와 생성 접근 지정자의 관계
- 컴파일러에 의해 생성된 기본 생성자는 클래스의 접근 지정자에 따라 결정된다.
- 직접 생성자를 정의할 때는 클래스와 생성자의 접근 지정자를 다르게 지정할 수 있다.
- 클래스가 임포트되지 않으면 생성자는 접근 지정자와 상관없이 호출 자체를 할 수 없다.
클래스 + 생성자 |
동일 패키지 |
다른 패키지 |
public class + deafult constructor |
인스턴스 생성 가능 |
임포트 가능 / 생성자 사용 불가 |
public class + public constructor |
인스턴스 생성 가능 |
임포트 가능 / 생성자 사용 가능 |
class + deafult constructor |
인스턴스 생성 가능 |
임포트 불가 / 생성자 사용 불가 |
class + public constructor |
인스턴스 생성 가능 |
임포트 불가 / 생성자 사용 불가 |