유틸리티 클래스
단순히 정적 메서드와 정적 필드만을 가진 클래스를 만들어야할 때가 있다. 예컨데 java.lang.Math와 java.util.Arrays와 같은 클래스들이 이에 해당된다. 정적 멤버만 담은 유틸리티 클래스는 인스턴스화 해서 사용하려고 만든게 아니다. 그렇기 때문에 인스턴스화를 막아야 한다. 추상 클래스로는 인스턴스화를 막을 수 없다. 하위 클래스를 만들어 인스턴스화 하면 되기 때문이다. 추상 클래스로 만들면 마치 상속해서 쓰라는 것 처럼 보인다.
private 생성자를 추가하면 된다. 생성자에 에러를 추가하면 더 좋다. 실수로 클래스 내부에서 생성자를 호출할 위험이 적어진다. 이 방식은 상속을 불가능하게 하는 효과도 있다. 명시적이든 묵시적이든 하위 클래스는 상위 클래스의 생성자를 호출하게 되는데 상위 클래스의 생성자가 private라 호출할 수 없다.
1 | public class UtilityClass{ |