JAVA
Item4 : 인스턴스화를 막으려거든 private 생성자를 사용하라
backlo
2022. 12. 7. 17:05
Utility Class의 객체 생성을 막기 위해서는 private constructor를 선언해서 default constructor가 생기지 않도록 해야한다.
public class UtiliyClass {
private UtilityClass () {
throw new AssertionError();
}
}
물론 abstract class를 만듬으로써 객체 생성을 막을 수도 있지만 다음과 같은 문제가 있다.
- 다른 클래스가 이를 상속해서 객체를 생성할 수 있음
- 사용자도 상속을 해야하는 class로 오해
따라서 인스턴스화를 막으려거든 private 생성자를 선언해 사용하는 것이 좋다.
그러나 모든 코드는 트레이드 오프가 있듯 private 생성자에도 부작용도 있다. 바로 다른 클래스가 상속할 수 없다는 것이다. (자식 클래스가 부모 클래스의 생성자에 접근 할 수 없기 때문에)