가시성 제어
499
작성한 질문수 48
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 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를 위의 목적으로 활용하지 않을 수 있지만, 간혹 접근 권한을 최소화 하는 과정에서 사용되곤 합니다!
답변이 도움이 되었으면 좋겠습니다~ 감사합니다!! 🙏
행복한 새로운 한 주 되세요!! 🙇
수업노트
0
59
1
싱글톤과 스프링
0
74
2
get() = 3
0
54
2
강사님
0
77
1
강의 복습하면서 생긴 질문
1
97
1
Kotlin과 Java의 현업에서의 활용
0
130
2
data class와 자바의 Lombok을 이용한 DTO 클래스 차이 질문
0
78
1
코틀린에서 상속 시, 주의점에 대한 질문
1
102
3
내용 이해 질문
0
58
1
자바와 코틀린의 함수형 프로그래밍,
1
93
1
플랫폼 타입 설명 문의
2
79
2
널 아님 단언 관련 질문
0
86
1
강의 중 질문
0
81
2
범위 비교 질문
1
93
2
타입캐스팅 궁금한점 질문드립니다.
1
241
2
코틀린 val 질문
0
168
2
완강 후 Kotlin 이런저런 질문 드려봅니다!
3
413
2
확장함수 스타일 질문
0
140
2
확장 프로퍼티 질문
1
158
1
update 함수를 만든다는게 어떤 의미인지 예시가 궁금합니다!
1
284
1
java class의 NotNull 어노테이션 인식
1
265
1
[16강] 확장함수 관련 질문입니다!
1
134
2
리턴타입 사용시 any를 사용해도 괜찮은가요?
1
143
1
안녕하세요 scope function 에 receiver 가 없는 경우
1
172
1





