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

자바에서 생성자에 final을 붙일 수 없는 이유

자바에서 final 키워드는 메서드가 하위 클래스에서 오버라이드(재정의)되는 것을 금지하는 역할을 합니다. 그런데 이상하게도 생성자에는 final 키워드를 붙일 수 없는데요, 그 이유를 간단히 살펴보겠습니다.

final 키워드의 역할

final로 선언된 메서드는 자식 클래스에서 재정의(override)할 수 없습니다. 즉, 부모 클래스의 메서드 동작을 고정하고 싶을 때 final을 사용합니다.

생성자는 애초에 상속되지 않는다

핵심은 여기에 있습니다. 생성자는 서브클래스에 상속되지 않기 때문에 오버라이드될 수 없습니다. 각 클래스의 생성자는 해당 클래스 자신의 인스턴스를 초기화하기 위한 전용 목적으로 존재하며, 부모와 자식 간에 공유되거나 재정의되는 대상이 아닙니다.

따라서 생성자에 final을 붙인다는 것은 아무런 의미가 없습니다. 이미 오버라이드가 불가능한 대상에 굳이 '오버라이드 금지'를 선언하는 것과 같으니까요. 자바 언어 설계자들은 이러한 중복 선언을 허용하지 않기로 했고, 그 결과 생성자에 final 키워드를 사용하면 컴파일 에러가 발생합니다.

정리

• final 키워드는 메서드의 오버라이드를 막기 위한 장치입니다.
• 생성자는 상속되지 않아 오버라이드 자체가 불가능합니다.
• 따라서 자바에서는 생성자에 final을 붙이는 것이 허용되지 않습니다.