7분 34초 인스턴스 변수 접근
안녕하세요,
7분 34초 경에 질문이 있습니다.
정적 메서드에서 인스턴스 변수에 접근할 수 없어 오류가 난다고 하셨는데,
만약,
Person.callDisplayName();이 아니라p1.callDisplayName();로 하면 에러가 나지 않고 정상 출력으로 Name: Alice가 나오는지 궁금합니다.만약 그래도 에러가 난다면 this가 private 인스턴스 변수를 가리켜서 그런걸까요?
private String name이 아니라 public String name으로 바꾸면 인스턴스 변수이지만 접근 가능한지 궁금합니다.
답변 2
0
지금은 callDisplayName이라는 인스턴스 메서드 자체가 없는 상황입니다. this, private 상관없이 해당 인스턴스가 가지고 있는 메서드가 아예 없습니다. 지금은 정적 메서드만 있으니까요. 없는 것을 호출할 수는 없습니다.
아뇨. 인스턴스 변수에는 접근 안됩니다. 아예 정적 변수(static)으로 바꿔야 합니다.
0
안녕하세요, 인프런 AI 인턴입니다. 타이거님.
Java의 정적 메서드와 인스턴스 변수 접근에 관한 질문을 주셨군요. 이를 이해하기 위해서는 몇 가지 기본적인 개념을 알아두는 것이 좋습니다.
정적 메서드에서 인스턴스 변수 접근: 정적(static) 메서드는 클래스 관련 context에서 실행되므로 인스턴스 변수에 직접 접근할 수 없습니다. 잠재적으로 인스턴스를 생성하지 않고 호출되는 것이기 때문입니다.
p1.callDisplayName();와 같은 형식은 정적 메서드라면 여전히 에러를 발생시킵니다. 이 경우,p1이라는 인스턴스를 통해 호출된다는 점에서 정상 출력이 나올 수도 있지만, 이는callDisplayName()메서드가 정적 메서드가 아니어야 가능합니다.private vs public 접근 제한자: 인스턴스 변수
name이private로 선언되어 있으면 클래스 외부에서는 직접 접근할 수 없습니다. 만약public으로 선언한다면, 외부에서도 해당 인스턴스 변수를 직접 읽고 쓸 수 있게 됩니다. 그러나 이는 좋은 디자인 패턴이 아닙니다. 일반적으로 인스턴스 변수는 private로 두고, 접근자를 사용하여 처리하는 것이 권장됩니다.
관련된 질문 및 답변은 다음과 같습니다:
- Java에서 클래스 변수와 인스턴스 변수의 차이: 클래스와 인스턴스 간의 변수 접근 방법에 대한 설명이 포함되어 있습니다.
- 자바의 접근 제한자와 메서드 호출 원리: 접근 제한자와 메서드 호출 시의 행동 방식에 대한 추가 정보를 얻을 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
정처기 2026-3 실기 문의
0
84
2
정처기 실기 3회 컴싸 사용 여부
0
53
1
모의고사 1 회 2번문제 중
0
71
2
26-2 이론문제 재탕
1
54
1
26-2년도 코드문제
0
36
0
26-2 코드문제
0
43
1
15분 48초 질문
0
57
2
26-1년도 이론문제 재탕
0
66
1
26-1년도 코드문제 재탕
0
46
0
이론재탕만 눈치챘어도
0
73
1
25-3년도 이론문제 재탕
0
58
1
25-3년도 코드문제 재탕
0
42
0
출력값 문의
0
53
2
25-2 분기커버리지
0
47
0
25-2 이론 재탕
0
67
1
25-1 이론 재탕
0
53
1
서브넷 마스크
0
52
2
모의고사 1회 계산문제 2개 맞았는데
0
69
2
업캐스팅 문제 예시 4번 부모 호출
0
51
2
모의고사 자료 해설이 너무 불친절하네요.
0
95
2
부모의 생성자 출력 관련
0
48
2
24-3 이론파트 재탕문제
0
57
0
누락코드
0
45
1
다차원 배열 포인터 질문있습니다
0
71
3





