접근 지정자
- 접근 지정자는 자바 제어자 중 한 종류로, 클래스, 멤버, 생성자 앞에 위치할 수 있으며, 사용 범위를 정의하는 역할을 한다.
- 클래스의 내부 구성 요소 4가지(필드,메서드,이너클래스,생성자)앞에 붙어 있을 때와 클래스 자체에 붙어 있을 때와 나눠서 생각해야 한다.
맴버 및 생성자 접근 지정자
종류
- public
- protected
- default
- private
아무것도 명시하지 않았다면 default 가 자동으로 설정된다.
사용 범위
- 4가지 접근 지정자 중에 public의 사용 범위가 가장 넓으며, private가 가장 좁다.
public > protected > deafult > private
private
- 자신의 클래스 내부에서만 사용할 수 있는 접근 지정자이다.
- 외부 클래스에서는 사용할 수 없다.
- 캡슐화와 관련된 접근 지정자이다.
- 메서드를 이용해 외부에서 접근처리할 수 있다.(Setter,Getter)
default
- 같은 패키지안의 모든 클래스에서 사용할 수 있는 접근 지정자이다.
- "pacakge 접근 지정자" 라고 한다.
protected
- 같은 패키지의 모든 클래스에서 사용할 수 있다.
- 추가 사용 범위는 다른 패키지의 자식 클래스 안에서 사용할 수 있다.
- default + 다른 패키지의 자식 클래스
public
- 동일패키지 및 다른 패키지에서 접근 할 수 있다.
static
- static은 클래스의 멤버(필드,메서드,이너클래스)에 사용되는 제어자다.
- 객체 생성 없이 클래스명.멤버명 만으로 사용할 수 있다.
- static이 붙어 있는 멤버를 "정적 멤버" 라고 한다.
- "정적 멤버"는 인스턴스 멤버와 반대된다.
- 정적 메서드 내부에서는 정적 멤버만 사용할 수 있다.(인스턴스 멤버는 객체를 생성해야 하기 때문에 값이 존재할 수 없다.)
객체 안에 있을 때 사용할 수 있는 상태가 되는 멤버를 "인스턴스 멤버" 라고한다.
클래스 접근 지정자
종류
default 클래스는 같은 패키지 내에서만 사용할 수 있고, public 클래스는 다른 패키지에서도 사용할 수 있다.
생성자 접근 지정자와의 연관성
- 자동으로 추가되는 생성자의 접근 지정자는 클래스의 접근 지정자에 따라 결정된다.