Final은 변수, 메서드, 클래스에 적용하여 변경 불가의 동작을 수행하는 키워드이다.
변수 앞에 final이 사용되면 변경 불가능한 변수, 상수로써 동작한다.
따라서 final로 지정한 변수의 값을 다시 설정하면 오류를 발생시킨다.
public class FinalEx {
public static void main(String[] args) {
final int finalValue = 0;
finalValue = 1; finalValue = 2; // 에러
}
}
만약 변수 선언시 값을 설정하지 않은 경우, 생성자에 의해 한번만 값을 설정하는 방식으로 코드를 작성한다. 또한 다음과 같은 순서로 우선순위를 가진다.
메소드에 final 키워드를 적용하면 재정의(오버라이딩)이 불가능한 메소드가 된다.
public class FinalEx {
final void finalMethod() {
System.out.println("오버라이딩 불가");
}
}
class FinalExEx extends FinalEx {
void finalMethod() {
System.out.println("오버라이딩 불가"); //에러
}
}
클래스에 final 키워드를 적용하면 상속 불가능한 클래스가 된다.
public class FinalEx {
}
class FinalExEx extends FinalEx { //에러
}