추상 클래스로 만들어도 하위 클래스를 만들어 인스턴스화 할 수 있다. 컴파일러가 기본 생성자를 만드는 경우는 오직 명시된 생성자가 없을 때뿐이니 private 생성자를 추가하면 클래스의 인스턴스화를 막을 수 있다.
public class UtilityClass { private UtilityClass() { throw new AssertionError(); } }