생성자를 생략하면 컴파일러는 자동으로 인자없는 public 기본 생성자를 만들어 버린다.
사용자는 자동 생성자와 일반 생성자를 구별할 수 있는 방법이 없다.
객체를 만들 수 없도록 하려고 클래스를 abstract로 선언해봤자 하위 클래스를 정의하는 순간 객체 생성이 가능해지며
상속 받아 사용하는 것이 맞다고 생각 할 수도 있다.
이 경우 기본 생성자는 클래스에 생성자가 없을 때 생성되니, private 생성자를 클래스에 넣어 객체 생성을 방지해야 된다.
1 2 3 4 5 6 7 8 9 | //객체를 만들 수 없는 유틸리티 클래스 public class UtilityClass{ //기본 생성자가 자동 생성되지 못하도록 하여 객체 생성 방지 private UtilityClass(){ throw new AssertionError(); } ... //나머지 생략 } | cs |
'Java' 카테고리의 다른 글
Effective Java #06 유효기간이 지난 객체 참조는 폐기하라 (0) | 2016.04.13 |
---|---|
Effective Java #05 불필요한 객체는 만들지 말라 (0) | 2016.04.13 |
Effective Java #02 private 생성자나 enum 자료형은 싱글턴 패턴을 따르도록 설계하라. (0) | 2016.04.13 |
Effective Java #02 생성자 인자가 많을 때는 Builder 패턴 적용을 고려하라. (0) | 2016.04.12 |
Effective Java #01 생성자 대신 정적 팩터리 메서드를 사용할 수 없는지 생각해 보라 (1) | 2016.04.11 |