제어자는 클래스, 변수 또는 메서드의 선언부에 함께 사용되어 부가적인 의미를 부여한다.
클래스변수(static멤버변수)
: 모든 인스턴스에 공통적으로 사용하는 변수이다.static 메서드
: 인스턴스를 생성하지 않고도 호출이 가능한 메서드이다.class Card {
// 상수지만 선언과 동시에 초기화하지 않고 생성자에서 초기화할 수 있다. (단 한번만)
final int NUMBER;
final String KIND;
// final멤버 변수를 초기화하는 데 필요한 값을 제공하는 생성자
// 이를 통해 각 인스턴스마다 final멤버 변수가 다른 값을 갖도록 할 수 있다.
// 이 방법이 아니라면 클래스에 선언된 final멤버 변수는 모두 같은 값을 가져야 한다.
Card(String kind, int num) {
KIND = kind;
NUMBER = num;
}
}
접근 제어자는 해당하는 멤버 또는 클래스를 외부에서 접근하지 못하도록 제한하는 역할을 한다.
private
: 같은 클래스 내에서만 접근 가능default
: 같은 패키지 내에서만 접근 가능protected
: 같은 패키지 내에서, 그리고 다른 패키지의 자손 클래스에서 접근 가능public
: 접근 제한 없음접근 제어자를 적절히 선택해서 접근 범위를 최소화하도록 노력하자.
public final class Math {
private Math() {
// 상수와 static 메서드로만 구성되어 있음
}
}