#04 private 생성자를 사용해서 인스턴스 생성을 못하자 하자
여기저기서 전역적으로 쓰이는 경우, 특히 Utility 클래스들을 만들 때 static 메서드와 static 필드만으로 이루어진 클래스를 만들 때가 있습니다.
객체 지향 관점에서 보면 좋지는 않습니다.
이런 클래스들은 인스턴스 생성이 무의미합니다.
따라서 명시적으로 지정한 기본 생성자가 없을 수 있는데, 이 경우엔 컴파일러에서 아래와 같이 기본 생성자를 자동으로 생성해 줍니다.
클라이언트 입장에서는 자동으로 생성된 기본 생성자가 의미가 없기도 하지만, javadoc 프로그램으로 생성하는 API 문서에도 나오기 때문에 생성자가 쓰이는 클래스로 오해할 수 도 있습니다.
따라서 아래와 같이 private 생성자를 정의해서 클래스의 인스턴스 생성을 못하게 할 수 있습니다.
private 생성자이기 때문에 외부에서 이 생성자를 호출할 수 없고, javadoc 프로그램으로 생성한 API 문서에도 나오지 않게 됩니다.
하지만 아래와 같이 상속을 통해 서브 클래스에서 슈퍼 클래스의 private 생성자를 호출(super)할 수 없게 된다는 단점이 있습니다.
안드로이드 개발을 하다 보면 전역적으로 쓰이는 클래스들을 생성하게 되는데, private 생성자 정의는 생각 못했었네요.
앞으론 항상 정의해야겠습니다.