작성
·
444
0
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
안녕하세요! 11강 강의를 듣던중 궁금증이 생겨질문을 하게 되었습니다
1분 51초 "kotlin에서는 패키지를 namespace를 관리하기 위한 용도로만 사용! 가시성 제어에는 사용되지 않는다"라고 하셨는데! 이 말에는 "자바는 package를 가시성 제어로 사용한다"라는 의미가 내포되어 있는듯해서 질문을 하게되었습니다. 혹시 자바에서 package를 가시성 제어로 사용하는 경우가 있을까요?
답변 1
1
안녕하세요, 가보자!! 님~ 😊 주말 밤 늦게 공부하시고 대단하십니다!! 👍
혹시 자바에서 package를 가시성 제어로 사용하는 경우가 있을까요?
에 대해 답변드려보자면 네네 맞습니다!
Java에서는 default
라는 visibility modifier가 있어 패키지 단위로 가시성을 제어할 수 있습니다.
관련한 국문 블로그 글은
공식 Java Documentation (영문)은
에서 확인해보실 수 있습니다!!
추가적으로, 질문 주신 내용이 "실제 default
를 활용하는 경우가 현업에서 많나요?!"로 해석될 수도 있을 것 같아요!! 그 방향으로 답변을 드려보면, 네네~ 간혹 있습니다!
<Effective Java 3판 Item 15. 클래스와 멤버의 접근 권한을 최소화하라>를 보면, "package-private (default)으로 선언하면 해당 패키지 안에서만 이용할 수 있다. 패키지 외부에서 쓸 이유가 없다면 package-private으로 선언하자. 그러면 이들은 API가 아닌 내부 구현이 되어 언제든 수정할 수 있다"라는 구절이 있습니다!
이 구절을 해석해보자면, 라이브러리나 프레임워크를 만드는 입장에서 A 클래스
를 다른 클래스가 활용 해야 하는데 public으로 열게 되면 라이브러리, 프레임워크 사용자가 접근할 수 있게 되어 하위호환성을 고려해야 하니 default로 선언하여 같은 패키지에서만 쓰게 하는 것이 좋다 라는 의미입니다.
물론 JDK 9부터는 모듈 간의 의존성 제어가 나와 default를 위의 목적으로 활용하지 않을 수 있지만, 간혹 접근 권한을 최소화 하는 과정에서 사용되곤 합니다!
답변이 도움이 되었으면 좋겠습니다~ 감사합니다!! 🙏
행복한 새로운 한 주 되세요!! 🙇