- final 클래스는 상속이 불가능하므로 하위 클래스를 만들어 메서드를 넣을 수 없다.
public class UtilityClass {
// 기본 생성자가 만들어지는 것을 막는다(인스턴스화 방지용).
private UtilityClass() {
throw new AssertionError();
}
// 나머지 코드는 생략
}
- 모든 생성자는 명시적이든 묵시적이든 상위 클래스의 생성자를 호출한다. 클래스의 생성자를 private으로 선언했으니 하위 클래스가 상위 클래스에 접근 할 수 없게 된다.
Reference: