item4) 인스턴스화를 막으려면 private 생성자를 사용
정적 메서드와 정적 필드만 담은 클래스를 사용하고자 하는 경우가 존재한다.
ex1) 기본 타입 값이나 배열 관련 메서드를 모아둔 java.lang.Math
ex2) 특정 인터에피스를 구현하는 객체 생성해주는 정적 메서드를 모아둔 java.util.Collections
ex3) final 클래스와 관련된 메서드를 모아둔 경우
이와같이 정적 멤버만 담은 유틸리티 클래스는 인스턴스로 만들기 위해 설계한 것이 아니다.
생성자를 명시하지 않으면 컴파일러에 의해 자동으로 기본 생성자가 만들어져 인스턴스화될 수 있다.
따라서 private 생성자를 추가해 기본 생성자가 생성되지 않도록 해 클래스의 인스턴스화를 막는다.
만약 내부에서 private 생성자가 불리는 경우 Exception 던지도록 구성한다.
이렇게 할 경우 하위클래스가 상위클래스의 생성자에 접근할 수 없으므로 클래스의 상속이 불가능해진다.
Last updated