퍄퍄

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

Java/Effective Java

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

오늘밤재워줭 2020. 3. 22. 20:11

단순히 정적 필드, 정적 메소드만을 담은 유틸리티 클래스를 만들 때는 

해당 클래스를 인스턴스로 만들어 쓰려고 설계하지 않는다.

생성자를 명시하지 않으면 컴파일러가 자동으로 public 생성자를 만들어 줄 것이며,

추상클래스로 만든다고 해도 해당 클래스를 상속받은 하위 클래스를 통해 인스턴스화 할 수 있다.

컴파일러가 기본 생성자를 만드는 경우는 명시된 생성자가 없을 경우이니

private 생성자를 추가해 클래스의 인스턴스화를 막도록 한다.

private 생성자를 추가하고 Error 처리를 해줌으로써 해당 클래스 내부에서도 생성자 호출을 막는다.

또한, 모든 생성자는 상위 클래스의 생성자를 호출하는데 private 로 선언했기 때문에

하위 클래스가 상위 클래스의 생성자에 접근할 수 없으므로 상속 또한 불가능하게 만들 수 있다.