Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

자바 final 클래스란? 상속을 막는 방법과 활용 이유

자바 final 클래스의 개념

자바에서 final 키워드를 사용해 클래스를 선언하면 해당 클래스는 더 이상 상속될 수 없습니다. 즉, final 클래스의 핵심 목적은 서브클래스(자식 클래스) 생성을 방지하는 것입니다.

클래스에 final이 붙어 있으면 어떤 클래스도 이 클래스를 확장(extends)할 수 없으며, final 클래스가 가진 기능과 구현을 그대로 보존하게 됩니다.

final 클래스 선언 방법

final 클래스를 선언하는 문법은 매우 간단합니다. 클래스 선언부에 final 키워드만 추가하면 됩니다.

public final class Test {
    // 클래스 본문
}

위와 같이 선언된 Test 클래스는 다른 클래스가 상속하려고 시도할 경우 컴파일 오류가 발생합니다.

// 컴파일 오류 발생
class Child extends Test { // 'Test'는 final이므로 상속 불가
}

final 클래스를 사용하는 이유

final 클래스를 사용하면 다음과 같은 장점이 있습니다.

  • 보안 강화: 악의적인 서브클래싱을 통해 클래스의 동작을 변경하거나 우회하는 것을 막을 수 있습니다.
  • 불변성 유지: 설계 의도대로 클래스의 동작이 고정되므로 예측 가능한 코드를 작성할 수 있습니다.
  • 설계 명확성: "이 클래스는 더 이상 확장되지 않는다"는 개발자의 의도를 코드로 명확하게 표현합니다.

대표적인 final 클래스 예시

자바 표준 라이브러리에서도 final 클래스를 널리 활용하고 있습니다. 대표적으로 java.lang.String, Integer, Double 같은 래퍼(wrapper) 클래스들이 모두 final로 선언되어 있습니다. 특히 String 클래스가 final인 이유는 문자열의 불변성(immutability)을 보장하여 스레드 안전성과 보안을 확보하기 위함입니다.

정리

final 클래스는 상속을 허용하지 않음으로써 클래스의 무결성과 보안을 지키는 중요한 도구입니다. 확장을 고려하지 않은 유틸리티 클래스나 불변 객체를 설계할 때 final 키워드를 적극적으로 활용하면 더 견고한 자바 프로그램을 만들 수 있습니다.