항목 1부터 계속해서 나오는 private 생성자.
이게 그렇게 중요한가? 싶을정도로 자꾸 나오네요.

객체를 생성 못하게 하는 경우가 종종 있습니다. 싱글톤 패턴일수도 있을테고 객체생성 자체가 무의미한 경우도 있습니다.
Java에서는 Collections 나 Arrays, Math 가 객체생성이 무의미한 경우에 속합니다.
객체 생성을 통해서 메소드 호출을 하는것이 아니라 모든 메소드를 static로 선언한뒤 절차지향 프로그래밍에서 사용하는 전역 함수 처럼 사용하는겁니다.

자바에서 객체 생성이 불가능하게 하는 방버이 몇가지 있는데 abstract class 로 선언하는겁니다.
추상클레스와 interface는 객체 생성이 불가능 하기 때문에 이렇게 하는사람이 있을수도 있겠습니다만, 상속한 클레스에서 생성하면 그만입니다. 게다가 익명 클레스라는것도 있죠.

이것을 해결하는 가장 간단한 방법은 이전에 항목1 과 항목3 에서 사용했던것 처럼 private 생성자를 만드는겁니다.
이렇게 해놓으면 상속을 해도 기본생성자 (private 로 선언해둔 생성자)를 호출 할수가 없기때문에 상속시 에러가 납니다.
다른 매개변수가 있는 생성자를 public나 protect로 선언해두었다면 super생성자를 통해서 호출 할수도 있습니다만 이걸 원하는건 아니니까요.

어쨋든 객체 생성을 해서는 안되는 클레스라면 abstract class를 만들기보다는 생성자를 private로 선언 하는게 좋다 라는 이야기였습니다.
Posted by 동적할당
: