item4 - 인스턴스화를 막기 위해선 private 생성자를 사용하라
이러한 케이스가 어떠한 케이스냐 -> 우리가 기본적으로 객체를 생성하고 객체지향으로 사용하는 그러한 개념의 클래스가 아닌 StringUtils 와 같이 static 함수를 통해서 단순하게 사용하기 위해서만 존재하는 경우이다 이렇게 유틸성을 위해서 존재하는 클래스를 사용하는데 있어서 객체를 생성하고 사용하는 것도 가능은 하지만 유틸성으로 사용하는데 인스턴스를 생성하고 해당 인스턴스로부터 함수를 가져와서 사용하는 것 부터가 유틸적이지 않긴하다 그래서 intellij 에서도 그러한 클래스들을 인스턴스화 하려고 하면 문법적 오류를 뱉지는 않지만 자동으로 도와주지는 않는다
그래서 이러한 케이스에서는 인스턴스를 사용하지 못하도록 하는 방법에 대해서 이야기한다
첫 번쨰 방법으로는 abstract 키워드를 사용하는 방법이다 abstract 키워드를 넣어주면, 추상 클래스화 되고, 추상 클래스는 알다시피 인스턴스를 바로 만들 수는 없다 하지만 이게 abstract이기 때문에 뭔가.. 상속을 받고 싶어지고, 상속을 받으면 여전히 인스턴스를 생성하게 된다 그리고 상속을 받아서 객체를 생성하면 상위, 즉 부모 인스턴스도 생성되기 마련인 그러한 문제이다
그래서 두 번째 방법으로는 접근 지정자를 private으로 생성해 두는 것이다 물론 이렇게 해두면 클래스 내부에서 사용할 수 있다는 점이 문제이겠지만 뭐 실제로 내부에서 사용하는 일은 없다고 봐도 무방하구 이것도 처리하려면 private 으로 선언한 생성자 내부에 에러를 구현해두는 것이다 그러면 뭐 불러도 에러가 나기 떄문에 없다고 볼 수 있는 것이다 -> 에러와 익셉션에 나뉘는 부분에서 에러를 던지는 것이다(에러는 예외가 아니기 때문에 catch을 통해 처리할 수 있는 것이 아님)
Last updated
Was this helpful?