[아이템 4] 인스턴스화를 막으려거든 private 생성자를 사용하라

Jimin Lim·2022년 2월 26일
0

Effective Java

목록 보기
4/38
post-thumbnail

아이템 4

인스턴스화를 막으려거든 private 생성자를 사용하라

static 멤버만 담은 유틸리티 클래스는 인스턴스로 만들어 쓰려고 설계하지 않는다. 하지만 생성자를 명시하지 않으면 컴파일러가 자동으로 기본 생성자를 만들어준다. 따라서 의도치 않게 인스턴스화할 수 있게 된 클래스를 목격할 수 있다.

추상 클래스를 만드는 것으로는 인스턴스화를 막을 수 없다. 상속받아서 인스턴스화하면 되기 때문이다. 따라서 private 생성자를 추가해 클래스의 인스턴스화를 막을 수 있다.

public class UtilityClass {
	//인스턴스화 방지
	private UtilityClass() {
		throw new AssertionError();  
	}
	...
}

이 방식은 상속을 불가능하게 하는 효과도 있다. 하위 클래스는 상위 클래스의 생성자를 호출하게 되는데, 이를 private으로 선언했으니 하위 생성자가 상위 클래스의 생성자에 접근할 수가 없어진다.

profile
💻 ☕️ 🏝 🍑 🍹 🏊‍♀️

0개의 댓글