인프런 커뮤니티 질문&답변

Kim Chae Eun님의 프로필 이미지

작성한 질문수

스프링 DB 1편 - 데이터 접근 핵심 원리

객체 생성을 막기위한 abstract 클래스 선언

작성

·

256

3

안녕하세요 영한님! JDBC 이해 강의를 듣던 중 사소한 거지만 궁금한 점이 생겨서 질문드리게 되었습니다.

ConnectionConst 객체의 경우, static 멤버만을 저장하는 객체이기 때문에 의도치 않은 외부로 부터의 객체 생성을 막고자 abstract 추상 객체로 선언해 주셨다고 이해하였는데요.

public abstract class ConnectionConst { public static final String URL = ... .... }

단순히 객체 생성만을 막고자 한다면 abstract이 아닌 private 생성자를 선언해주는 방법도 있을것 같습니다.

혹시 두 방식의 장단점이나 차이점이 있을까 해서 질문 드려봅니다!

답변 1

5

안녕하세요. Kim Chae Eun님, 공식 서포터즈 David입니다.

abstract 키워드 자체에 '해당 클래스는 객체화 할 수 없음'의 의도가 명확히 드러나고 (객체화 할 수 없음에 대한) 구현이 포함되기 때문입니다.

private 생성자를 쓰더라도 reflection 기술을 사용하면 객체화 할 수 있게 됩니다.

감사합니다.