본문 바로가기

책, 강의 정리/이펙티브자바

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

인스턴스화를 할 수 없는 클래스 

ex) 정적 멤버만 담은 유틸리티 클래스(Arrays, Collections) 

 

생성자를 명시하지 않으면 자동으로 퍼블릭 기본 생성자가 생성된다.

그렇기 때문에 인스턴스화를 원하지 않으면 직접 private 기본 생성자를 작성해야 한다.

 

추상클래를 만들어도 구현해서 생성자를 만들면 되기 때문에 인스턴스화가 불가하다고 말할 수 없다.  

 

 

좀 더 확실히 해두고 싶다면 private 생성자에 Exception을 throw 하는 코드를 작성하자. 

 

 

private 생성자는 인스턴스화를 막을 뿐 아니라 상속을 막는효과도 있다.

상속은 기본적으로 public 또는 protected 접근이 가능한 기본 생성자가 있어야 하기 때문이다.