접근제어자
: public, protected, (dafalut), private
그 외
: static, final, abstract, native, trasient, synchronized, volatile, stricifp
하나만 선택
하여 사용할 수 있다.static
이 사용될 수 있는 곳 : 멤버변수, 메서드, 초기화 블럭class StaticTest {
static int width = 200; // 클래스 변수(static변수)
static int height = 200; // 클래스 변수(static변수)
static {
//static 변수의 복잡한 초기화 수행
}
static int max(int a, int b) { // 클래스 메서드(static메서드)
return a > b ? a : b;
}
}
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() // 에러. 추상 클래스의 인스턴스 생성불가