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

public class UtilityClass {
	private UtilityClass() {
		throw new AssertionError();
	}
}