정적 멤버만 담은 유틸리티 클래스는 인스턴스를 생성하지 않아도 사용할 수 있다. 하지만, 생성자를 명시하지 않으면 컴파일러가 자동으로 기본 생성자를 만들어주기 때문에 사용자는 이 생성자가 자동으로 생성된 것인지 구분할 수 없다.
추상 클래스로도 인스턴스화를 막을 수 없다. 하위 클래스를 만들어 인스턴스화하면 그만이기 때문이다.
인스턴스화를 막는 방법은 아주 간단하다. private 생성자를 추가하면 된다.
public class ItemClass {
private ItemClass() {
throw new AssertionError();
}
}
생성자를 private로 선언할 경우 클래스 외부에서 접근 불가, 상위 클래스의 생성자를 호출 할 수 없어 상속이 불가능하다.