제어자란 클래스와 클래스 멤버(필드, 메소드, 생성자)의 선언 시 사용하여 부가적인 의미를 부여하는 키워드를 의미한다. 자바에서 제어자는 접근 제어자와 기타 제어자로 구분할 수 있다.
접근제어자는 클래스와 클래스의 멤버를 사용할 때, 접근할 수 있는 범위를 지정하는 역할을 한다. 그렇게 함으로써 클래스 외부에서의 직접적인 접근을 허용하지 않는 멤버를 설정해 캡슐화가 가능하다.
public > protected > default > private 순으로 범위가 넓다.
종류 | 같은 클래스 | 같은 패키지 | 자식 클래스 | 그 외 영역 |
---|---|---|---|---|
public | O | O | O | O |
protected | O | O | O | X |
default | O | O | X | X |
private | O | X | X | X |
자바에서 final 제어자는 변경할 수 없다는 의미로 사용된다.
자바에서 static 제어자는 공통적인 이라는 의미로 사용된다. 프로그램 시작 시 최초 한 번만 생성되고 초기화 된다. 또한 클래스의 모든 인스턴스가 공유하며 인스턴스 생성 없이 사용 가능하다.
자바에서 abstract 제어자는 추상적인 이라는 의미로 사용된다. 선언부만 있고 구현부가 없는 메소드인 추상 메소드를 정의할 때 쓰이며, 하나 이상의 추상 메소드를 포함하는 추상 클래스를 정의할 때 사용된다.
대상 | 사용 가능한 제어자 |
---|---|
클래스 | public, default, final, abstract |
메소드 | 모든 접근 제어자, final, static, abstract |
필드 | 모든 접근 제어자, final, static |
지역 변수 | final |