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

가보자!!님의 프로필 이미지
가보자!!

작성한 질문수

자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)

11강. 코틀린에서 접근 제어를 다루는 방법

가시성 제어

작성

·

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를 위의 목적으로 활용하지 않을 수 있지만, 간혹 접근 권한을 최소화 하는 과정에서 사용되곤 합니다!

 

답변이 도움이 되었으면 좋겠습니다~ 감사합니다!! 🙏

행복한 새로운 한 주 되세요!! 🙇

 

가보자!!님의 프로필 이미지
가보자!!

작성한 질문수

질문하기