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

soojinkimss님의 프로필 이미지
soojinkimss

작성한 질문수

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

super - 부모 참조

@Override

작성

·

16

0

[질문 내용]

자식 클래스에서 부모 클래스를 상속받아 변수를 새로 재정의 할 때 왜 변수에는 @Override 어노테이션을 사용 할 수 없는 건가요? 생각해보니까 메소드 오버라이딩은 있어도 자식클래스에서 부모클래스의 동일한 변수는 왜 재정의가 안되는 거죠?

답변 1

0

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

soojinkimss님의 질문은 자바에서 변수에 대한 재정의와 관련된 개념적 부분에 관한 내용입니다. 자바의 객체지향 프로그래밍에서는 메서드 오버라이딩만을 허용하고, 변수는 오버라이딩의 개념이 적용되지 않습니다. 이는 자바 언어의 설계 철학에 의해 결정된 것입니다.

자바에서는 변수는 메서드와 달리 정적 바인딩(static binding)을 따릅니다. 이는 변수의 참조가 컴파일 시점에 결정되며, 실행 시점(runtime)에는 변경되지 않는다는 의미입니다. 따라서 변수는 객체의 타입이 아닌 변수의 선언된 타입에 따라 결정됩니다.

변수에 대해 @Override 어노테이션을 사용할 수 없는 이유는 자바에서는 변수를 다시 정의(redefine)하는 것이 아니라, 이름을 동일하게 갖는 새로운 변수를 선언하는 것으로 보기 때문입니다. 이 때문에 변수는 부모 클래스와 자식 클래스에서 별도로 존재하므로, 마치 전혀 다른 변수처럼 동작하게 됩니다.

궁금해하신 부분에 대한 유사한 질문과 답변을 다음 URL에서 찾을 수 있습니다:

  1. 오버라이딩과 변수 재정의에 대한 질문

  2. 자바의 변수와 메서드 동작 원리

이 답변이 soojinkimss님의 이해를 돕기 바랍니다. 추가적인 질문이 있다면 주저하지 마시고 언제든지 문의해 주세요.

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

soojinkimss님의 프로필 이미지
soojinkimss

작성한 질문수

질문하기