static 변수 질문입니다.
2
작성한 질문수 5
부모자식 상속 관계에서
부모에도 자식에도 static 변수 a가 선언 되어 있다면
업캐스팅시와 업캐스팅이 아닐때 그리고
부모.static변수 호출
자식.static변수 호출 이때가 궁금합니다.
static 변수는 무조건 부모의 static 변수 호출 되는건가요?
답변 2
0
안녕하세요. 핵심만 정리하면 다음과 같습니다.
규칙 하나면 됩니다: 필드(static 포함)는 “참조 변수의 선언 타입”으로 결정됩니다. 메서드는 실제 객체 타입(런타임)으로 결정되지만, 필드는 반대입니다.
부모와 자식에 같은 이름의 static 변수가 있으면 오버라이딩이 아니라 숨김(hiding) 이며, 두 변수는 서로 별개입니다.
Parent.a // 10 (부모 것)
Child.a // 20 (자식 것)
Parent p = new Parent(); p.a // 10
Child c = new Child(); c.a // 20
Parent pc = new Child(); pc.a // 10 ← 실제는 Child지만 선언 타입이 Parent라 부모 것
즉 “무조건 부모 것”이 아니라, 어떤 타입의 이름/참조로 접근했느냐에 따라 달라집니다. 업캐스팅한 참조로 접근하면 그 참조의 선언 타입인 부모 것이 나옵니다.
0
안녕하세요, 인프런 AI 인턴입니다. 달아단거님.
자바에서 static 변수는 클래스 레벨에서 관리되기 때문에, 해당 클래스의 이름을 통해 직접 접근합니다. 상속 관계에 있는 클래스에서 static 변수가 각각 선언된 경우에는 각 클래스에 고유하게 존재하게 됩니다. 그러므로, 업캐스팅 여부와 관계없이 static 변수는 해당 클래스에 맞게 호출됩니다.
1. 업캐스팅 시와 업캐스팅이 아닐 때
- 부모 클래스와 자식 클래스에 동일한 이름의 static 변수가 선언된 경우:
- 업캐스팅 여부와 무관하게 static 변수를 참조할 때는 그 변수가 선언된 클래스명을 사용하여 접근합니다.
- 예를 들어,
Parent.a로 접근하면 부모 클래스의 static 변수a에 접근하며,Child.a로 접근하면 자식 클래스의 static 변수a에 접근합니다.
- 업캐스팅 여부와 무관하게 static 변수를 참조할 때는 그 변수가 선언된 클래스명을 사용하여 접근합니다.
2. 부모.static 변수와 자식.static 변수 호출 시
- static 변수 호출 방법:
Parent.a: 부모 클래스의 static 변수를 호출합니다.
Child.a: 자식 클래스의 static 변수를 호출합니다.
추가 설명
- 상속 관계라도 static 변수는 오버라이딩 되지 않으며, “숨김(hiding)“이 발생한다고 생각할 수 있습니다. 하지만 이러한 숨김은 객체 메서드처럼 동작하지 않으며, 클래스 타입을 기반으로 접근해 사용합니다.
이러한 원리를 이해하면, static 변수에 대해 더 명확하게 접근 방법을 이해할 수 있게 됩니다. 추가적으로 궁금하신 부분이 있으면 언제든 질문해 주세요.
관련하여 더 많은 정보를 얻고 싶으시다면, 다음 링크를 참고하시면 도움이 될 것입니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
파이썬 4강 질문입니다.
0
19
2
모의고사 1회 3번문제
0
49
3
41강 30:10
0
27
2
이론 공부법 질문 있습니다.
0
53
2
부모의 생성자 관련 질문
0
27
2
시험지 문제에 필기해도 되나요?
0
32
3
41강 11:23
0
30
2
4강파이썬 질문입니다
0
22
2
try-catch 핸들러명
0
32
2
36강 3:48
0
35
2
35강 18:27
0
33
2
자식 코드 내 super() 생략
0
40
2
출력질문
0
49
2
31강 4:06
0
45
2
파이썬 학습자료가 강의 자료와 다릅니다.
0
74
3
섹션 2 - 9강 강의자료 다운로드 문제
0
55
3
29강 3:09
0
41
2
28강 6:42
0
48
2
22강 17:33
0
46
2
75강 26년 1회 코드 문제 해석 강의 질문 드립니다.
1
58
2
모의고사
0
69
1
17강 28:26
0
52
2
C언어 기출문제 변형에서 6번 문제입니다. 20:56
0
57
3
17강 22:38
0
48
2





