강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

jongbin7245님의 프로필 이미지
jongbin7245

작성한 질문수

(2025) 일주일만에 합격하는 정보처리기사 실기

Hiding (정적 메서드, 멤버 변수) v2

하이딩 질문

해결된 질문

작성

·

30

0

화면 캡처 2025-10-28 164709.jpg.webp

이게 이해가...
statci에 따라 값이 달라진건가요..?

자식을 parent p =new child();여도 값이 child로 호출 되는 경우가 있지 않나요?구분이 안됩니다

답변 2

1

주말코딩님의 프로필 이미지
주말코딩
지식공유자

안녕하세요!

하이딩에 있는 것은 메서드가 아니라 static이 붙은 변수라는 것을 이해해주셔야 합니다.

static이 붙은 변수인 경우 업캐스팅일 때 앞에 붙은 Parent 부분의 필드가 출력된다고 외우시면 됩니다.

말씀하신 child가 호출되는 것은 인스턴스 메서드가 부모와 자식이 겹칠 때 자식 것을 실행합니다.

0

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

자바에서의 상속과 변수 하이딩은 처음 접하시면 혼란스러울 수 있는 부분입니다. 질문해주신 내용에 대해 상세히 설명드리겠습니다.

변수 하이딩과 출력 결과

  1. 변수 하이딩: 자식 클래스가 부모 클래스와 동일한 이름의 변수를 가질 경우, 변수는 하이딩되어 자식 클래스의 변수로 덮어쓰여집니다. 이 변수는 객체의 참조 타입이 아닌 정의된 클래스에 의해 결정됩니다.

  2. 업캐스팅(Upcasting)과 참조 변수:

    • Parent p = new Child(); 와 같이 업캐스팅을 할 경우, 참조 변수 pParent 클래스의 타입을 가지게 됩니다.
    • 이 상태에서 p.name 를 호출하면, Parent 클래스에 정의된 name 변수가 출력됩니다. 즉, “Parent”가 출력됩니다.
  3. 참조 타입과 실제 객체의 차이:

    • 반면, Child 클래스를 직접 참조하는 경우, Child c = new Child();c.name 를 호출하면 “Child”가 출력됩니다.

이미지 참고

  • The image contains Java code demonstrating inheritance and member variable hiding

자바 변수 하이딩의 일반적 동작

  • 업캐스팅을 통해 부모 클래스 타입의 참조 변수를 사용하면, 해당 참조 변수가 가리키는 클래스 내에서 정의된 변수를 참조합니다. 변수의 하이딩은 컴파일 시점에 결정되기 때문에 실행 시간에 객체의 실제 타입과는 무관하게 참조 변수의 타입에 의존합니다.

자바의 변수와 메서드의 동작 원리는 다르게 작동합니다. 이 내용을 잘 이해하시면 객체 지향 프로그래밍에 큰 도움이 되실 것입니다.

혹시 더 궁금한 점이 있으시면 언제든 추가적으로 질문해 주세요.

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

jongbin7245님의 프로필 이미지
jongbin7245

작성한 질문수

질문하기