강의

멘토링

커뮤니티

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

Hankyy님의 프로필 이미지
Hankyy

작성한 질문수

김영한의 실전 자바 - 기본편

상속과 접근 제어

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

작성

·

17

·

수정됨

0

[질문 내용]
상속관계에서 자식클래스의 멤버 변수에 부모 클래스와 같은 이름으로 정의를 하게 되면 자식 클래스의 멤버 변수를 먼저 찾는것으로 보여지는데 @Override 어노테이션은 붙히는게 불가능한것 처럼 보입니다 상속관계에서 멤버 변수에는 오버라이딩의 개념이 없는건가요?

답변 1

0

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

Hankyy님께서 질문하신 상속 관계에서의 멤버 변수 오버라이딩에 대한 내용은 객체지향 언어에서 많이 헷갈려하는 부분 중 하나입니다. 자바 언어에서는 메서드 오버라이딩이 가능한 반면, 멤버 변수에 대한 오버라이딩 개념은 존재하지 않습니다. 멤버 변수는 각 클래스에 종속적이며, 자식 클래스에서 부모 클래스와 동일한 이름의 변수를 선언하면, 자식 클래스의 변수가 부모 클래스의 변수를 ‘숨기게’ 됩니다. 이로 인해 자식 클래스의 인스턴스에서 해당 변수에 접근할 때는 자식 클래스의 변수가 우선됩니다.

  1. 메서드 오버라이딩: 메서드는 자식 클래스에서 부모 클래스의 메서드를 재정의하여 사용합니다. 이때 @Override 어노테이션을 사용하여 명시적으로 오버라이드함을 나타낼 수 있습니다.

  2. 멤버 변수의 숨김: 자식 클래스에서 부모 클래스와 동일한 이름의 변수를 선언하면, 자식 클래스의 변수는 부모 클래스의 변수를 숨기게 됩니다. 그러나 이는 오버라이딩이 아니라 숨김이라고 표현합니다. 따라서 @Override는 적용되지 않습니다.

자세한 설명을 원하시면, 다음의 질문과 답변을 참고하실 수 있습니다:

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

Hankyy님의 프로필 이미지
Hankyy

작성한 질문수

질문하기