public class Parent {
public final void doSomething() {
// 구현 내용
}
}
public class Child extends Parent {
// 오류: final 메서드는 오버라이딩할 수 없음
// public void doSomething() { ... }
}
final 키워드는 자바에서 사용되는 한정자(modifier)로, 변수, 메서드, 클래스에 적용될 수 있습니다. final 키워드가 적용된 요소는 변경될 수 없는 불변성(Immutability)을 가지게 됩니다.
final 필드는 일반적으로 대문자로 작성되며, 초기화는 선언 시 또는 생성자에서 이루어집니다.
상수의 값은 프로그램 실행 도중에 변경할 수 없기 때문에 일반적으로 고정된 값이나 설정값에 사용됩니다.
final int MAX_VALUE = 100;
final double PI = 3.14159;
final String APPLICATION_NAME;
public MyClass() {
APPLICATION_NAME = "My Application";
}
final 메서드를 사용하면 하위 클래스에서 부모 클래스의 메서드를 변경하지 못하도록 보장할 수 있습니다. 보안, 안정성, 성능 등의 이유로 메서드를 재정의하지 못하도록 막을 때 유용합니다.
public class Parent {
public final void doSomething() {
// 구현 내용
}
}
public class Child extends Parent {
// 오류: final 메서드는 오버라이딩할 수 없음
// public void doSomething() { ... }
}
public final class ImmutableClass {
// 구현 내용
}
// 오류: final 클래스는 상속할 수 없음
// public class SubClass extends ImmutableClass { ... }
final 키워드를 사용하면 값, 메서드, 클래스 등의 변경을 제한하여 의도치 않은 버그나 오류를 방지할 수 있습니다. 또한 컴파일러에게 최적화에 대한 힌트를 제공하여 성능을 향상시킬 수도 있습니다.