제어자 ( modifier )
클래스, 변수 , 메서드의 선언부에 함께 사용되어 부가적인 의미를 부여한다.
하나의 대상에 대해 여러 제어자를 조합하여 사용하는 것이 가능
| 제어자 | 접근 제어자 | public , protected , (default) , private |
| 그 외 | static , final , abstract , native , transient ... |
클래스, 멤버변수, 메서드에 주로 사용된다
접근제어자는 한번에 네가지중 하나만 선택해서 사용할수 있다
주로 접근 제어자를 제일 왼쪽에 놓는 경향이 있다
static
'클래스의' 또는 '공통적인' 의 의미를 가지고 있다
인스턴스가 아닌 클래스에 관계된것 이기 때문에 인스턴스를 생성하지 않고도 사용할수 있다
final
'마지막의' 또는 '변경될수 없는'의 의미를 가지고 있다
변수에 사용되면 값을 변경할수 없는 상수가 됨
메서드에 사용되면 오버라이딩을 할수 없게 됨
클래스에 사용되면 자신을 확장하는 자손클래스를 정의하지 못하게 됨
abstract
'미완성의' 의미를 가지고 있다
접근 제어자
private : 같은 클래스 내에서만 접근 가능
default : 같은 패키지 내에서만 접근 가능
protected : 같은 패키지 내에서 + 다른패키지의 자손클래스에서 접근 가능
public : 접근 제한이 전혀 없다
| 대상 | 사용가능한 접근 제어자 |
| 클래스 | public, (default) |
| 메서드 | public, protected, (default), private |
| 멤버변수 | |
| 지역변수 | 없음 |
접근 제어자를 이용한 캡슐화
클래스 내부에 선언된 데이터를 보호하기위해 접근제어자를 사용
외부에는 불필요한, 내부적으로만 사용되는 부분들을 감추기 위해