제어자(modifier)
클래스, 변수 또는 메서드 선언부에 함께 사용되어 부가적인 의미를 부여
1. 접근제어자
- 클래스 및 인터페이스 그리고 이들이 가진 멤버의 접근을 제한하기 위해 사용
(객체지향에서의 캡슐화와 관련)
1). public
- 접근 제한 없음.
- 클래스를 다른 개발자가 사용할 수 있도록 라이브러리 클래스로 개발한다면 public접근 제한을 갖도록 해야 한다.
2). protected
- 같은 패키지 또는 다른 패키지에 속한 자식 클래스에서 사용할 수 있도록 한다.
3). default
- 같은 패키지에 소속된 클래스만 사용 가능
- 접근제한자를 생략하고 클래스를 선언했다면 default 접근제한자가 적용된다.
4). private
생성자의 접근 제한
- 클래스에 접근제한자를 선언하지 않으면 컴파일러에 의해 자동으로 기본 생성자가 추가된다.
자동 생성된 접근 제한은 불러오는 클래스의 접근 제한과 동일하다.
2. 그 외 제어자
- static, final, abstract, native, transient, synchronized, volatile, strictfp
1) static
- 클래스의, 공통적인
해당 키워드가 붙은 변수 및 메서드는 인스턴스 관계없이 같은 값을 가지며 인스턴스 생성없이 사용 가능하다.
2). final
- 마지막의, 변경될 수 없는
거의 모든 대상에 사용가능하며 변수에 사용하면 상수가 되고 메서드에 사용하면 오버라이딩이 불가능하고 클래스에 사용되면 자손 클래스를 만들 수 없다.
3). abstract
- 추상의, 미완성의
추상 메서드 선언시 사용된다.