본문 바로가기

JAVA

[JAVA] 생성자가 private로 선언하는 목적

반응형

JAVA 프로젝트 코드를 보다보니, private로 선언된 생성자들이 꽤 많이 보였다.

그때 들었던 생각은 

"생성자를 private로 선언하면 외부에서 인스턴스 생성을 하지 못하는데 대체 무슨 의미가 있는것이지?"

private 으로 생성자를 선언하게 되면 인스턴스 생성이 불가능하고, 더 나아가 서브클래스를 만들 수 없다.

하지만 이렇게 의도적으로 private로 생성자를 만들어주는 경우가 있는데,

이는 해당 클래스의 인스턴스 생성이 무의미하기 때문이다.

예를 들어 java.util package 의 Arrays나 java.lang package의 Math 클래스는 해당 클래스에 정의된 메스도만 사용할 뿐, 굳이 인스턴스를 생성할 필요가 없다. 이런 경우 개발자가 의도적으로 인스턴스를 사용하지 못하도록 생성자를 private으로 선언하는 것이다.

대신 클래스의 method와 field를 static으로 선언하여 외부에서 접근할 수 있도록 한다.

static으로 선언된 클래스는 인스턴스가 아니라 클래스명 자체로 접근할 수 있기 때문에 인스턴스를 생성하지 않아도 된다.


위와 같이 java.util.package의 Arrays sort함수는 public static으로 정의되어 인스턴스 생성없이도 해당 메서드를 사용할 수 있다.






반응형