Java/주니어 자바 개발자를 위한 100가지 질문

[Java] 자바(Java)에서 final의 의미, 기능

saedong 2023. 5. 25. 10:33

클래스나 변수에 final을 붙이면 처음 정의된 상태가 변하지 않는것을 의미한다.

자바에서 변수들은 기본적으로 가변적인데, 변수에 final 키워드를 붙여 참조값을 변경 못하도록 해 불변성을 확보할 수 있다.

final 키워드가 사용되는 3가지 경우를 정리해보자면 다음과 같다.

 

final 변수


변수를 선언할 때 클래스 앞에 final을 붙이면 초기화 후 변경할 수 없다. 

변경하려고 하면 컴파일 에러가 발생한다.

final int finalValue = 1;
finalValue = 2; // 에러

 

final 메소드


메소드에 final 키워드를 적용하면 오버라이딩, 즉 재정의가 불가능하다.

 

public class Method {
	final void finalMethod() {
    		System.out.println("finalMethod 오버라이딩 불가능");
    }
}

class SubMethod extends Method {
	void finalMethod() { // 에러
    		System.out.println("finalMethod 오버라이딩 불가능");
    }
}

 

 

final 클래스


클래스에 final 키워드를 적용하면 그 클래스는 상속 불가능한 클래스가 된다.

 

public final class FinalClass {

}

class SubClass extends FinalClass {
	//final때문에 상속 불가능
    // 에러
}