강의

멘토링

로드맵

Inflearn brand logo image

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

khcho1492님의 프로필 이미지
khcho1492

작성한 질문수

김영한의 실전 자바 - 중급 1편

같은 이름의 바깥 변수 접근

정적 중첩 클래스 사용 이유

작성

·

43

0

 학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.


1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]

중첩 클래스 또는 내부 클래스를 사용하는 이유로
"중첩 클래스는 특정 클래스가 다른 하나의 클래스 안에서만 사용되거나, 둘이 아주 긴밀하게 연결되어 있는 특별한 경우에만 사용해야 한다. 외부 여러곳에서 특정 클래스를 사용한다면 중첩 클래스로 사용하면 안된다."
라고 언급이 되었는데, 본질적인 질문이 있습니다.

정적 중첩 클래스 같은 경우는 타 클래스에서 쓰는 경우가 별로 없고 외부클래스 내에서만 사용하는 경우에 쓴다는건데..
그럼 정적의 의미가 뭔지 궁금합니다.

그냥 내부클래스만 쓰면 되는거 아닌가요?
내부클래스의 기능에서 인스턴스변수 접근이 제한되는 게 정적 중첩 클래스라는 생각이 들어서.. 외부에서 사용하지도 않는데 왜 정적클래스를 굳이 사용하는지 궁금합니다.

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. khcho1492님.

정적 중첩 클래스에 대한 궁금증을 해결해 드리겠습니다.

  1. 정적 중첩 클래스란?

    • 정적 중첩 클래스는 외부 클래스의 인스턴스와 독립적인 상태로 존재할 수 있는 클래스입니다. 이는 외부 클래스의 인스턴스 없이도 해당 클래스의 인스턴스를 생성할 수 있음을 의미합니다.
  2. 정적 중첩 클래스의 장점

    • 독립성: 정적 중첩 클래스는 외부 클래스의 인스턴스에 종속되지 않으므로, 인스턴스 생성에 있어 독립적입니다. 이는 메모리 사용의 최적화를 가능하게 하며, 불필요한 외부 클래스 인스턴스를 생성하지 않아도 되는 이점이 있습니다.
    • 캡슐화 향상: 정적 중첩 클래스를 사용함으로써 외부 클래스와 강한 결합을 피하고, 특정 기능이나 로직을 외부 클래스로부터 분리하여 코드의 가독성을 향상시킬 수 있습니다.
  3. 내부 클래스와의 차이점

    • 일반 내부 클래스는 외부 클래스의 인스턴스와 밀접하게 연결되어 있으며, 외부 클래스의 인스턴스 변수와 메서드에 쉽게 접근할 수 있습니다. 이는 외부 클래스의 컨텍스트 내에서 내부 클래스가 동작하도록 하며, 두 클래스 간의 강한 결합을 만들어냅니다.
    • 반면, 정적 중첩 클래스는 외부 클래스 인스턴스 없이 독립적으로 존재하기 때문에 강한 결합을 피할 수 있으며, 외부 클래스의 정적 멤버에만 접근 가능합니다.

정적 중첩 클래스는 외부 클래스와의 관계가 덜 밀접하면서도 특정 기능을 캡슐화하려는 경우에 유용합니다. 따라서 외부에서 사용하지 않더라도 내부 구조 상의 조직적 이유로 정적 중첩 클래스를 사용하는 것이 좋습니다.

관련 내용을 좀 더 자세하게 알고 싶으시다면, 다음 답변들을 참고해 보세요:
- static class 와 new 키워드
- 정적 중첩 클래스, 정적 변수에 대한 질문

이 자료들이 정적 중첩 클래스의 활용과 사용 방법에 대해 더욱 명료한 설명을 제공할 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

khcho1492님의 프로필 이미지
khcho1492

작성한 질문수

질문하기