private 으로 생성자를 선언하게 되면 인스턴스 생성이 불가능하게 된다.
뿐만 아니라 생성자를 호출할 수 없으므로 서브클래스를 만들 수 없게 된다.

 

그런데도 객체지향에서 생성자를 private으로 만드는 이유는 인스턴스 생성이 무의미하기 때문이다.

예를 들어 java.util package 의 Arrays나 Date, 또는 java.lang package의 Math 클래스 등의 경우는 굳이 인스턴스를 생성할 필요가 없다.
따라서 인스턴스를 사용하지 못하도록 생성자를 private으로 선언하는 것이다.

 

이때, 쉽게 생성자를 선언하지 않는 것으로 생각할 수 있다.
그러나 생성자를 선언하지 않는 경우에 자바 컴파일러는 기본적으로 default 생성자를 만들기 때문에 객체가 생성 가능한 클래스가 된다.
따라서 인스턴스를 만들지 못하게 막으려면 생성자를 private으로 만들어야 한다.

 

그런데 이렇게 되면 생성자를 private 으로 선언된 클래스에는 접근할 방법이 생기지 못하게 된다.
이를 위하여 클래스의 method와 field를 static으로 선언하는 것이다.
static으로 선언된 클래스는 인스턴스가 아니라 클래스명 자체로 접근할 수 있기 때문에 인스턴스를 생성하지 않아도 된다.

 

즉 이를 반대로 생각해보면, static method와 static field로 선언된 클래스는 생성자가 private 으로 선언되어 있다는 것을 알 수 있다.

 

'Java > The Java Language' 카테고리의 다른 글

Exception chain  (0) 2013.10.17
Text Encoding  (0) 2013.10.12
Java Dynamic Proxy --> Draft  (0) 2013.02.07
The Class Class and Reflection  (0) 2013.02.07
What is Enum in Java  (1) 2013.02.06
Posted by Steven J.S Min
,