제어자
제한자 또는 제어자(Modifier)란 객체 지향 프로그래밍(OOP)에서 클래스, 변수 또는 메소드의 선언부에 함께 사용되어 부가적인 의미를 부여한다. 제한자는 클래스나 멤버변수와 메소드에 주로 쓰이며 하나의 대상에 대해 여러 제한자를 조합하여 사용하는 것이 가능하다. 단, 접근 제한자의 경우 하나만 선택해서 사용해야 한다.
제한자의 종류
- 접근 제한자(access modifier) : public, protected, private, default
- 그 외의 제한자와 관련된 키워드 : static, final, abstract, native, transient, synchronized, volatile, strictfp
접근 제한자
- 퍼블릭(public) : 클래스 외부에서도 접근할 수 있다.
- 프로텍티드(protected) : 다른 클래스에서는 접근할 수 없지만, 상속 받은 자식 클래스에서는 접근이 가능하다.
- 프라이빗(private) : 클래스 내부에서만 접근이 가능하다.
- 디폴트(default) : 접근 제한자를 적용하지 않았을 때 적용되는 제한자이다.
그 외의 제한자와 관련된 키워드
- static : 접근 제한자로 접근이 가능한 범위 내의 모든 곳에서 공유하는 필드와 메소드이다.
- final : 클래스, 메소드, 변수에 사용이 가능하다.
- abstract : 클래스와 메소드에 사용되는데, 메소드의 경우 선언부만 작성된 추상 메소드를 선언하는 데에 사용된다.
- native : 자바가 아닌 언어로 구현한 후 자바에서 사용하려고 할 때 이용한다.
- transient : 클래스의 멤버변수를 선언할 때 붙일 수 있다.
- synchronized : 스레드를 동기화한다.
- volatile : 자바 변수를 메인 메모리에 저장하겠다고 명시하는 것이다.
- strictfp : 부동 소수(floating point) 계산의 특정한 사항들을 제어하는 데 사용된다.