item4) 인스턴스화를 막으려면 private 생성자를 사용

  • 정적 메서드와 정적 필드만 담은 클래스를 사용하고자 하는 경우가 존재한다.

    • ex1) 기본 타입 값이나 배열 관련 메서드를 모아둔 java.lang.Math

    • ex2) 특정 인터에피스를 구현하는 객체 생성해주는 정적 메서드를 모아둔 java.util.Collections

    • ex3) final 클래스와 관련된 메서드를 모아둔 경우

  • 이와같이 정적 멤버만 담은 유틸리티 클래스는 인스턴스로 만들기 위해 설계한 것이 아니다.

  • 생성자를 명시하지 않으면 컴파일러에 의해 자동으로 기본 생성자가 만들어져 인스턴스화될 수 있다.

  • 따라서 private 생성자를 추가해 기본 생성자가 생성되지 않도록 해 클래스의 인스턴스화를 막는다.

  • 만약 내부에서 private 생성자가 불리는 경우 Exception 던지도록 구성한다.

  • 이렇게 할 경우 하위클래스가 상위클래스의 생성자에 접근할 수 없으므로 클래스의 상속이 불가능해진다.

Last updated