> For the complete documentation index, see [llms.txt](https://develop-footprint.gitbook.io/o/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://develop-footprint.gitbook.io/o/java/effective-java/2/item4-private.md).

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

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