Java 에서 public final class 란?

오픈소스 코드를 읽다 보니 다음과 같이 선언된 class 를 종종 보았다.

public final class XXX { }

보통 final 은 변수를 선언할 때 해당 변수의 값이 변경되는것을 방지하기 위해서 사용하는 것인데 class 앞에 사용되는 final 은 어떤 의미인지 의문이 들었다.

답은 간단하다.

final 이 붙은 class 는 더이상 확장할 수 없다. 즉 상속받아서 사용할 수 없다는 것이다.

이것은 원래부터 상속을 위해 디자인된 클래스가 아닌 일반 클래스를 마구잡이로 상속하여 프로그램의 디자인이 깨지고 예상치 못한 일이 발생하는 것을 막아주기 위한 수단이다.

http://stackoverflow.com/questions/218744/good-reasons-to-prohibit-inheritance-in-java

여기서도 볼 수 있듯이 class 는
1. 상속을 위해 디자인되고 그 에 관한 문서를 충분하게 만들거나
2. 상속 자체를 막아버리거나

두가지 경우로 사용하는 것이 안전한 프로그램 방법이라고 설명한다. ( 이펙티브 자바를 보지는 않았지만 그 내용 중 일부에 있다고 함)

댓글 남기기