인프런 커뮤니티 질문&답변
9장 상속 문제와 풀이 질문
작성
·
24
·
수정됨
0
@Override
public void print() {
super.print();
System.out.println("- 저자: " + author + ", isbn:" + isbn);
}다름이 아니고 @Override를 하는 이유가 부모에서 사용하는 메서드를 자식에서 재사용을 위해서 사용하신다고 했는데 궁금한 게 강의 내용 중에 객체를 생성하고 메서드를 사용할 경우 먼저 자식을 보고 그다음에 없으면 부모를 보신다고 하셨는데 그러면 이미 자식에는 print가 있으니까 저렇게 super.print();를 붙이면 굳이 @Override를 안 붙여도 상관없지 않나요? 관례가 있어서 많은 개발자분들께서 붙인다고 하셨는데 저 경우에는 재사용이 아니고 바로 자식 쪽에서 메서드가 있으니까 굳이 부모까지는 갈 필요가 없지 않나요??
퀴즈
상속을 사용하는 주된 목적은 무엇일까요?
새로운 클래스 이름을 짓기 위해
코드 재사용을 통해 중복을 줄이기 위해
프로그램 실행 속도를 높이기 위해
메모리 사용량을 줄이기 위해
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. 탕면이님.
자바에서 @Override 애노테이션은 메서드가 부모 클래스에서 상속된 메서드를 재정의하고 있음을 명확히 나타내 줍니다. 이 애노테이션은 코드의 가독성을 높이고, 코드 유지보수 시 개발자들이 쉽게 코드를 이해할 수 있도록 돕습니다. 또한, 컴파일러에게 재정의 여부를 검사할 수 있도록 해줍니다. 따라서 @Override를 사용하면, 실수로 메서드 시그니처가 잘못되어 재정의되지 않는 경우에 에러를 통해 쉽게 알 수 있습니다.
@Override
public void print() {
super.print(); // 부모 클래스의 print 메서드를 호출합니다.
System.out.println("- 저자: " + author + ", isbn:" + isbn); // 추가적인 출력 내용
}
super.print();는 부모 클래스의 print() 메서드를 명시적으로 호출하고 이어서 자식 클래스에서 추가적인 작업을 수행하려고 할 때 유용합니다. @Override를 사용하지 않으면 문법적으로 잘못은 없지만, 다른 개발자들이 코드를 읽을 때 이 메서드가 부모 클래스의 메서드를 재정의하고 있다는 사실을 빠르게 인식하기 어려울 수 있습니다.
따라서 @Override는 코드의 명확성과 유지 보수성을 높이는 중요한 요소로 작용합니다. 모든 상황에서 반드시 필요하지는 않지만, 관례적으로 사용되는 것이 좋습니다.
질문에 대한 참고 정보를 제공하기 위해, 비슷한 질문이 있었던 글을 공유해 드리겠습니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





