inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

섹션 8 퀴즈

[정적 중첩 클래스 AI 문제] 복수정답 가능성 문의

71

작성자 없음

작성한 질문수 0

0

Screenshot 2025-07-14 at 7.03.04 PM.png

정적 중첩 클래스의 경우, 외부 클래스의 정적 변수에는 접근이 가능하지만 인스턴스 변수에는 접근할 수 없다는 것은 알고 있습니다.

정적 중첩 클래스와 인스턴스 변수가 생성됐을 때, 생성영역이 다르기 때문이라고 한다면 정적 중첩 클래스가 외부 클래스의 public 인스턴스 메서드에도 접근할 수 없는 것이 맞는 건가요?

아래와 같이 코드를 작성해보니 static context에서 non-static method를 참조할 수 없다는 오류가 뜹니다.

public class NestedOuter {

    private static int outClassValue = 3;
    private int outInstanceValue = 2; // 인스턴스 영역에 생성되는 변수 (heap 영역)
    public void outerPrint() {
        System.out.println("Can Nested class access this method?");
    }

    // 정적 중첩 클래스
    // static은 클래스 수준(static)으로 존재
    static class Nested {
        private int nestedInstanceValue = 1;

        public void print() {
            // 자신의 멤버 접근
            System.out.println(nestedInstanceValue);

            // 바깥 클래스 인스턴스 멤버에는 접근할 수 없다.
            // nested static class는 outer class의 인스턴스와 독립적으로 존재하기 때문에, 인스턴스 변수에는 접근할 수 없다
            // System.out.println(outInstanceValue);

            // 바깥 클래스의 클래스 멤버에는 접근 가능. private이어도 Nested 클래스가 NestedOuter 클래스 내부에 존재하기 때문에 접근 가능.
            // System.out.println(NestedOuter.outClassValue); // 가능
            System.out.println(outClassValue);

            System.out.println(outerPrint());
        }
    }
}

정답은 C, D 두 가지인 것으로 생각하면 될까요?

java 객체지향

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 노아님께서 질문하신 정적 중첩 클래스와 외부 클래스의 멤버 접근에 관한 부분을 설명드리겠습니다.

정적 중첩 클래스는 외부 클래스의 인스턴스와 독립적으로 존재하므로, 외부 클래스의 인스턴스 변수인스턴스 메서드에 직접 접근할 수 없습니다. 따라서, 정적 중첩 클래스는 외부 클래스의 인스턴스가 필요 없는 정적 변수 및 정적 메서드에는 접근이 가능합니다.

  • 정적 변수, 정적 메서드에 대한 접근: 정적(Static)으로 선언된 멤버는 클래스로부터 독립적으로 사용될 수 있으며, 이는 정적 중첩 클래스에서도 마찬가지입니다. 따라서 외부 클래스의 정적 변수 및 메서드는 직접 접근할 수 있습니다.

  • 인스턴스 변수, 인스턴스 메서드에 대한 접근: 인스턴스 변수와 인스턴스 메서드(예: public 인스턴스 메서드)는 외부 클래스의 인스턴스가 생성되어야만 접근할 수 있습니다. 그러므로 정적 중첩 클래스에서는 이러한 멤버에 직접 접근할 수 없습니다.

노아님의 이해를 돕기 위해 관련 내용이 포함되어 있는 몇 가지 질문 게시물을 참고하실 수 있습니다:

  1. “정적 중첩 클래스, 정적 변수에 대한 질문” - 정적 중첩 클래스와 정적 멤버에 관한 다른 학습자와의 문답.
  2. “중첩 클래스 및 내부 클래스 코드 질문.” - 실제 사용 사례와 코드에 대한 학습자와의 문답.

이렇게 정적 중첩 클래스의 멤버 접근 규칙을 이해하면 코드 작성을 더 명확하게 할 수 있습니다. 정적 중첩 클래스는 해당 클래스와 외부의 관계를 명확하게 하며, 종종 설계 및 복잡성이 높은 시스템에서 사용됩니다.

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

문제와 풀이

0

28

1

섹션 2 퀴즈 9번

0

35

2

강의노트 내용이 이해가 되지 않아서 문의드립니다.

0

50

1

중급1편, 래퍼클래스 문제와풀이2 로또제너레이터 질문

0

71

1

setVlaue질문

0

98

3

안녕하세요 코딩테스트와 병행하고 싶어서 질문드립니다.

0

96

1

findValue의 파라메터까지 래퍼클래스 배열인 이유가 있을까요?

0

76

1

아래 글처럼 toString() 강의부터 화면이 안보여요

0

101

2

TemporalAdjusters의 lastDayOfNextMonth(), lastDayOfNextYear() 메서드 지원 안함

0

87

2

오타 제보도 되나요?

0

95

2

지역 클래스 예제3 지역변수 질문

0

71

2

래퍼클래스 박싱 출력

0

61

1

자바 equals() 메소드에 대한 물리적 동일성, 논리적 동등성 질문

0

110

3

강의록 오타 제보

0

70

2

자바의 기본 클래스들에 관하여

0

72

1

실무에서 중첩(내부) 클래스 사용하나요?

0

84

1

지역 클래스 - 지역 변수 캡처3

0

58

1

12:30 의 newClassGrade 질문이 있습니다.

0

58

1

날짜와 시간 문제풀이가 막히는데

0

103

2

내부 클래스의 바깥 클래스 참조

0

70

1

스트링 풀, new String()

0

106

3

정적 중첩 클래스 사용 이유

0

99

1

status.getCode() 대신 status.code 사용

1

82

1

메서드의 지역변수명과 내부클래스의 멤버메서드에서의 지역변수명의 중복관련

0

75

1