inflearn logo
강의

Course

Instructor

Kim Younghan's Practical Java - Basics

Problem and Solution

9장 상속 문제와 풀이 질문

31

hsg9911199884

3 asked

0

@Override
public void print() {
    super.print();
    System.out.println("- 저자: " + author + ", isbn:" + isbn);
}

다름이 아니고 @Override를 하는 이유가 부모에서 사용하는 메서드를 자식에서 재사용을 위해서 사용하신다고 했는데 궁금한 게 강의 내용 중에 객체를 생성하고 메서드를 사용할 경우 먼저 자식을 보고 그다음에 없으면 부모를 보신다고 하셨는데 그러면 이미 자식에는 print가 있으니까 저렇게 super.print();를 붙이면 굳이 @Override를 안 붙여도 상관없지 않나요? 관례가 있어서 많은 개발자분들께서 붙인다고 하셨는데 저 경우에는 재사용이 아니고 바로 자식 쪽에서 메서드가 있으니까 굳이 부모까지는 갈 필요가 없지 않나요??

java 객체지향

Answer 1

0

communityai8509

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

자바에서 @Override 애노테이션은 메서드가 부모 클래스에서 상속된 메서드를 재정의하고 있음을 명확히 나타내 줍니다. 이 애노테이션은 코드의 가독성을 높이고, 코드 유지보수 시 개발자들이 쉽게 코드를 이해할 수 있도록 돕습니다. 또한, 컴파일러에게 재정의 여부를 검사할 수 있도록 해줍니다. 따라서 @Override를 사용하면, 실수로 메서드 시그니처가 잘못되어 재정의되지 않는 경우에 에러를 통해 쉽게 알 수 있습니다.

@Override
public void print() {
    super.print(); // 부모 클래스의 print 메서드를 호출합니다.
    System.out.println("- 저자: " + author + ", isbn:" + isbn); // 추가적인 출력 내용
}

super.print();는 부모 클래스의 print() 메서드를 명시적으로 호출하고 이어서 자식 클래스에서 추가적인 작업을 수행하려고 할 때 유용합니다. @Override를 사용하지 않으면 문법적으로 잘못은 없지만, 다른 개발자들이 코드를 읽을 때 이 메서드가 부모 클래스의 메서드를 재정의하고 있다는 사실을 빠르게 인식하기 어려울 수 있습니다.

따라서 @Override는 코드의 명확성과 유지 보수성을 높이는 중요한 요소로 작용합니다. 모든 상황에서 반드시 필요하지는 않지만, 관례적으로 사용되는 것이 좋습니다.

질문에 대한 참고 정보를 제공하기 위해, 비슷한 질문이 있었던 글을 공유해 드리겠습니다:

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

질문있습니다

0

16

1

1번 문제 질문입니다.

0

20

1

음악플레이어 문제 중 코드질문

0

16

1

강의 자료에 사소한 오타가 있습니다.

0

42

2

매서드 참조값 반환??

0

61

1

접근제어자 - 쇼핑카트 문제에서 상품출력 부분 메서드

0

63

1

자바 기본편 - .(dot)에 관한 질문입니다!

0

82

1

공부방법

0

71

2

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

0

78

1

static method 질문

0

60

1

캡슐화 문제풀이 ShoppingCart 요구사항에 문제가 있어보입니다. 피드백 주세요

0

90

1

Method1에서 Student 객체

0

70

1

3강 18. null 질문

0

64

1

this 와 super의 호출 순서는 부모-자식관계 떄문만인가요?

0

72

1

팩토리 메서드 패턴과 일반 생성자 사용의 장단점

0

94

1

문의

0

101

1

9장 상속 문제와 풀이 부분 궁금한게 있어서 질문드립니다

0

84

1

상속과 그에 따른 메모리 구조 질문

0

59

1

call메소드에서 멤버에 접근하는 방식을 이해 못 했습니다

0

71

1

수강기한

0

132

1

기본편 객체지향 프로그래밍에 대한 정의

0

82

1

섹션10 상속 메모리 구조 및 문제 관련 질문

0

84

1

추가 지식 학습

0

149

2

private 변수에 대한 질문

0

68

1