inflearn logo
강의

Course

Instructor

Kim Younghan's Practical Java - Basics

Understanding Access Modifier 2

private 접근 제어자

125

작성자 없음

0 asked

-1

[질문 내용]

Speaker 클래스에서 int volume를 private로 지정하였을 때 volume 필드는 외부에서 접근을 못하고 Speaker 내부에서만 접근을 할 수 있다 설명했습니다. 그렇다면, 예를 들어 volume 멤버 변수를 Speaker 클래스 내부에서 10을 대입한다고 했을 때 volume = 10; 라고 초기화를 하려고 하면 volume 변수가 존재하지 않는 오류가 발생합니다. 분명히 Speaker 내부 에서 선언된 volume 필드를 쓰려고 하는데 왜 자기 자신의 클래스에서 생성된 변수를 사용하지 못하는 거죠?

java 객체지향

Answer 1

0

communityai8509

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

Speaker 클래스 내에서 volume 변수를 초기화할 때 발생하는 오류에 대한 질문을 주셨네요. 접근 제어자인 private는 지정된 클래스 내부에서만 해당 변수를 접근할 수 있게 합니다. 따라서 volume 변수가 Speaker 클래스 내부에 존재하고 접근 가능한 상태라면, 오류가 발생해서는 안됩니다.

혹시 아래와 같은 점들을 한번 확인해 보시겠어요?

  1. 변수 선언: private int volume; 선언이 클래스 내에 올바르게 되어 있는지 확인하세요.

  2. 메서드 또는 생성자 내에서의 사용: volume = 10;과 같이 사용할 때, 해당 코드가 메서드나 생성자 내에 있어야 합니다. 클래스의 직속 블록에서는 변수를 초기화할 수 없습니다. 예를 들어, 다음과 같이 사용 가능해야 합니다:

    public class Speaker {
       private int volume;
    
    
       public Speaker() {
           this.volume = 10; // 생성자 내에서 초기화
       }
    }
    
  3. 전역 변수와 지역 변수의 혼동: volume이 변수가 아닌 다른 지역 변수나 파라미터와 이름이 혼동되지는 않는지 확인하세요. 이 경우 this.volume과 같이 명시적으로 전역 변수를 참조할 수 있습니다.

관련하여 유사한 질문이 이미 인프런에 올라와 있으며, private 접근 제어자를 잘못 사용하여 발생할 수 있는 문제에 대한 내용을 다루고 있습니다. 더 나은 이해를 위해 아래 링크를 참고하시면 좋을 것 같습니다:

  • 접근제어자에서는 클래스 내에서 변수의 접근 방법에 대한 논의가 이루어졌습니다.

다시 한번 해당 문제를 점검해보시고, 여전히 해결되지 않으신다면 소스 코드의 구문이나 구성에 대한 정보를 요청드려도 될까요? 추가적인 코드 상황을 알게 되면 더 정확한 문제 진단과 답변을 드릴 수 있습니다.

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

질문있습니다

0

26

1

1번 문제 질문입니다.

0

31

1

음악플레이어 문제 중 코드질문

0

26

1

9장 상속 문제와 풀이 질문

0

38

1

강의 자료에 사소한 오타가 있습니다.

0

48

2

매서드 참조값 반환??

0

66

1

접근제어자 - 쇼핑카트 문제에서 상품출력 부분 메서드

0

69

1

자바 기본편 - .(dot)에 관한 질문입니다!

0

85

1

공부방법

0

74

2

상속관계에서 멤버 변수는 오버라이딩 되는 개념이 아닌가요?

0

82

1

static method 질문

0

66

1

캡슐화 문제풀이 ShoppingCart 요구사항에 문제가 있어보입니다. 피드백 주세요

0

95

1

Method1에서 Student 객체

0

73

1

3강 18. null 질문

0

67

1

this 와 super의 호출 순서는 부모-자식관계 떄문만인가요?

0

75

1

팩토리 메서드 패턴과 일반 생성자 사용의 장단점

0

97

1

문의

0

104

1

9장 상속 문제와 풀이 부분 궁금한게 있어서 질문드립니다

0

89

1

상속과 그에 따른 메모리 구조 질문

0

62

1

call메소드에서 멤버에 접근하는 방식을 이해 못 했습니다

0

74

1

수강기한

0

135

1

기본편 객체지향 프로그래밍에 대한 정의

0

86

1

섹션10 상속 메모리 구조 및 문제 관련 질문

0

87

1

추가 지식 학습

0

152

2