제어자 (Modifier)
- 클래스와 클래스의 멤버 (멤버 변수, 메서드)에 부가적인 의미 부여
- 접근 제어자 : public, proteted, (default), private
- 그 외 : static, final, abstract, native, transient, synchronized, volatile, strictfp
- 하나의 대상에 여러 제어자를 같이 사용 가능 (접근 제어자는 하나만)
static- 클래스의, 공통적인
- 멤버 변수
- 모든 인스턴스에 공통적으로 사용되는 클래스 변수가 됨
- 클래스 변수는 인스턴스를 생성하지 않고도 사용 가능
- 클래스가 메모리에 로드 될 때 사용
- 메서드
- 인스턴스를 생성하지 않고도 호출이 가능한 static 메서드가 됨
- static 메서드 내에서는 인스턴스 멤버들을 직접 사용 불가능
class StaticTest {
static int width = 200;
static int height = 120;
static {
}
static int max(int a, int b) {
return a > b ? a : b;
}
}
final - 마지막의, 변경될 수 없는
- 클래스
- 변경될 수 없는 클래스, 확장될 수 없는 클래스가 됨
- 그래서 final로 지정된 클래스는 다른 클래스의 조상이 될 수 없음
- 메서드
- 변경될 수 없는 메서드, final로 지정된 메서드는 오버라이딩을 통해 재정의 될 수 없음
- 멤버변수
- 지역변수
- 변수 앞에 final이 붙으면, 값을 변경할 수 없는 상수가 됨
final class FinalTest {
final int MAX_SIZE = 10;
final void getMaxSize() {
final int LV = MAX_SIZE;
return MAX_SIZE;
}
}
abstract - 추상의, 미완성의
- 클래스
- 클래스 내의 추상 메서드가 선언되지 않았음을 의미
- 메서드
- 선언부만 작성하고 구현부는 작성하지 않은 추상 메서드임을 알림
abstract class AbstractTest {
abstract void move();
}
AbstractTest a = new AbstractTest();