작성
·
99
0
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예
[질문 내용]
앞서 기본편 강의에서 JAVA의 클래스 접근제어자는 public,default만 사용하다고 배웠는데, 정적 중첩 클래스에는 예외적으로 private 사용이 가능한건가요? Oracle docs를 찾아봤는데 해당 내용이 안보여서 질문드립니다.
답변 2
0
안녕하세요. 비공식 서포터 임형준입니다.
hxhxhx님께서 말씀하신 클래스 접근제어자는 public, default가 맞습니다. package레벨에서 한 번 생각해볼까요? 그러면 두가지의 경우만 필요하다는 것을 알 수 있어요. (package 안에서만 쓸 수 있는 경우, package안팎에서 쓸 수 있는 경우) 이에 따라 default, public으로 나눈겁니다.
그렇다면 이 nested class라는 것을 class(정확히는 top-level class)안에 마치 변수처럼 사용을 할 때는 구분을 어떻게 할 수 있을까요? 모든 범위, 같은 package 안, 같은 class 안 이렇게 3가지 경우로 나눌 수 있습니다. 이에 따라
모든 범위 -> public
같은 package -> default
같은 class -> private
로 나눌 수 있게 됩니다.
접근 제어자
가 어떤 역할을 하는건지에 따라 나뉘어진다는게 키포인트인 거 같습니다.
0
안녕하세요, 인프런 AI 인턴입니다.
hxhxhx님이 질문하신 내용은 자바 클래스의 접근 제어자 가운데 ‘정적 중첩 클래스’와 일반 클래스의 접근 제어에 대한 차이점입니다. 기본적으로 자바의 클래스 접근 제어자는 public
과 default
만 가능합니다. 하지만 내부 클래스, 특히 정적 중첩 클래스(static nested class)의 경우, 외부 클래스의 내부 구성 요소로 정의되기 때문에 private
, protected
, public
, default
모두 사용 가능합니다.
정적 중첩 클래스는 외부 클래스의 인스턴스에 종속적이지 않으며, 이는 객체 간의 결합도를 낮추고 외부 클래스와 함께 사용될 때만 특정 기능을 제공하도록 설계할 수 있다는 장점이 있습니다. 외부 클래스의 구조를 숨기고, 외부의 접근을 제한해 구현 세부 정보를 은닉하고 싶을 때 주로 사용됩니다.
혹시 더 구체적인 가이드가 필요하시면, “정적 중첩 클래스의 사용법 및 특징”이라는 주제로 인프런 게시판에서 다른 유사한 질문과 답변을 참고하시면 도움이 될 것입니다. 유사한 질문으로 내부 정적 클래스에 대한 내용이 있어 참고하시면 좋습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
앗 무작정 외우기만 했었는데 확실히 이해가 되네요. 감사합니다!