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에서 클래스 변수와 인스턴스 변수의 차이: 클래스와 인스턴스 간의 변수 접근 방법에 대한 설명이 포함되어 있습니다.
- 자바의 접근 제한자와 메서드 호출 원리: 접근 제한자와 메서드 호출 시의 행동 방식에 대한 추가 정보를 얻을 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
영상 다운로드는 안되나요?
0
8
0
26년2회 실기기출은 언제쯤...
0
52
2
이론 공부법 요약본 버전 업데이트 문의
0
35
2
정처기 필기 준비할때 이 이론을 다시 외워도 될까요?
0
59
2
조건 반복문 질문: for 문 ?
0
66
1
정처기 26-2회. 9번 질문드립니다!
0
86
1
이론 보면서 질문이 있습니다.
0
82
2
정보처리기사 실기 26년 2회 SRT 스케줄링 문제 단위 질문
0
93
2
유튜브(정보처리기사 실기 | 26년 2회 기출문제 코드 해설)
0
155
2
262 정처기 실기 C언어코딩
0
53
1
정보처리기사 262 실기 Hash(해시) 질문
0
86
2
static 변수 질문입니다.
0
66
2
파이썬 4강 질문입니다.
0
73
2
모의고사 1회 3번문제
0
95
3
41강 30:10
0
70
2
이론 공부법 질문 있습니다.
0
96
2
부모의 생성자 관련 질문
0
70
2
시험지 문제에 필기해도 되나요?
0
92
3
41강 11:23
0
61
2
4강파이썬 질문입니다
0
58
2
try-catch 핸들러명
0
72
2
36강 3:48
0
70
2
35강 18:27
0
69
2
자식 코드 내 super() 생략
0
63
2





