brunch

You can make anything
by writing

C.S.Lewis

by 이승현 Feb 23. 2018

Effective Java - 객체의 생성과 소멸

#04 private 생성자를 사용해서 인스턴스 생성을 못하자 하자

Effective Java - 객체의 생성과 소멸


#04 private 생성자를 사용해서 인스턴스 생성을 못하자 하자


여기저기서 전역적으로 쓰이는 경우, 특히 Utility 클래스들을 만들 때 static 메서드와 static 필드만으로 이루어진 클래스를 만들 때가 있습니다.

객체 지향 관점에서 보면 좋지는 않습니다.


이런 클래스들은 인스턴스 생성이 무의미합니다.

따라서 명시적으로 지정한 기본 생성자가 없을 수 있는데, 이 경우엔 컴파일러에서 아래와 같이 기본 생성자를 자동으로 생성해 줍니다.


#01 No default constructor


#02 DefaultConstructor instance


클라이언트 입장에서는 자동으로 생성된 기본 생성자가 의미가 없기도 하지만, javadoc 프로그램으로 생성하는 API 문서에도 나오기 때문에 생성자가 쓰이는 클래스로 오해할 수 도 있습니다.


따라서 아래와 같이 private 생성자를 정의해서 클래스의 인스턴스 생성을 못하게 할 수 있습니다.

#03 private default constructor
#04 No DefaultConstructor instance


private 생성자이기 때문에 외부에서 이 생성자를 호출할 수 없고, javadoc 프로그램으로 생성한 API 문서에도 나오지 않게 됩니다.


하지만 아래와 같이 상속을 통해 서브 클래스에서 슈퍼 클래스의 private 생성자를 호출(super)할 수 없게 된다는 단점이 있습니다.

#05 No extends




안드로이드 개발을 하다 보면 전역적으로 쓰이는 클래스들을 생성하게 되는데, private 생성자 정의는 생각 못했었네요.

앞으론 항상 정의해야겠습니다.

매거진의 이전글 Effective Java - 객체의 생성과 소멸

작품 선택

키워드 선택 0 / 3 0

댓글여부

afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari