변수에 사용되면 값을 변경할 수 없는 상수
가 되며, 메소드에 사용되면 오버라이딩
을 할 수 없게 되고 클래스에 사용되면 자신을 확장하는 자손클래스를 정의하지
못하게 된다.
final이 사용될 수 있는 곳 - 클래스, 메소드, 멤버변수, 지역변수
제어자 | 대상 | 의미 |
---|---|---|
final | 클래스 | 변경될 수 없는 클래스, 확장될 수 없는 클래스가 된다. final로 지정된 클래스는 다른 클래스의 조상이 될 수 없다. |
final | 메소드 | 변경될 수 없는 메소드, final로 지정된 메소드는 오버라이딩을 통해 재정의 될 수 없다. |
final | 멤버변수, 지역변수 | 변수 앞에 final이 붙으면, 값을 변경할 수 없는 상수가 된다. 정확히 말하면 초기화가 한번만 가능하다는 뜻입니다. |
public final class Test { // 조상이 될 수 없는 클래스
final int max_size = 100; // 값을 변경할 수 없는 멤버 변수 (상수)
final void getMaxSize() { // 오버라이딩 할 수 없는 메소드
final int localValue = max_size; // 값을 변경할 수 없는 지역 변수 (상수)
}
}