[아이템4] 인스턴스화를 막으려거든 private 생성자를 사용하라

ds_chanin

·

2020. 1. 18. 18:38


아이템 4 인스턴스화를 막으려거든 private 생성자를 사용하라

private 생성자를 추가하면 클래스의 인스턴스화를 막을 수 있다.

case

  • 정적 메서드와 정적 필드만을 담은 클래스를 만들경우 (ex. 유틸성 클래스)
    • java.lang.Math
    • java.util.Arrays
    • Java.util.Collections
  • final 클래스와 관련한 메서드를 모아 놓을 때

추상 클래스로 만드는 것은 상속을 하라는 의미로 받아 들여질 수 있으므로 인스턴스화를 막는데 아무런 도움이 되지 못한다.

기본적으로 아무런 생성자를 만들어 놓지 않으면 컴파일러가 기본 생성자를 public하게 만들기 때문에 명시적으로 private한 생성자를 만들어두어 인스턴스화를 막을 필요가 있다.
그렇지 않으면 기본 생성자를 컴파일러가 만든 것인지 클래스 제작자가 의도하여 만들어 둔 것인지 혼란을 야기할 수 있다.