inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

기초 탄탄! 독하게 시작하는 Java - Part 2 : OOP와 JVM

[실습] MyString 클래스에서 equals() 재정의

equals의 재정의(overriding)에 대해서

해결된 질문

80

IIIllIllII

작성한 질문수 1

0

먼저, 이렇게 양질의 강의 올려주셔서 정말 감사드립니다. 잘 듣고 있습니다.

 

49강의 실습에서 equals 메소드를 재정의한다고 말씀하셨습니다.

 

그런데, MyStringObject로부터 equals(Object)를 상속 받았고, 강의에서 보여주신 코드에서는 equals(MySring)을 정의했으므로, 메소드 시그니처가 달라 재정의(overriding)보다는 overloading이 더 적절한 표현이 아닌가 싶어서 질문드립니다. 실제로 인텔리제이에서 equals(MyString)@Override 어노테이션을 붙이려하면 아래의 사진과 같은 오류가 발생합니다.

image.png

아니면 제가 재정의에 대해서 오해하고 있는 부분이 있는걸까요?

java 객체지향 jvm data-structure

답변 2

1

널널한 개발자

오해가 아니라 제가 설명을 잘못한 것 같습니다. ㅜㅜ

제보 고맙습니다. 재개정 시 반영하도록 하겠습니다.

0

IIIllIllII

답변 감사드립니다. 좋은 강의 올려주셔서 다시 한 번 감사드립니다. 정말 잘 들었습니다!!

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. IIIllIllII님, 강의와 관련된 질문에 대해 설명드리겠습니다.

질문해주신 내용에서는 메소드 재정의(Overriding)와 오버로딩(Overloading)에 대한 이해가 핵심입니다.

  1. 메소드 재정의(Overriding):

    • Overriding은 상위 클래스에서 정의된 메소드를 하위 클래스에서 동일한 파라미터 목록(시그니처)으로 다시 정의하는 것입니다.
    • 기본적으로 Object 클래스에서 equals 메소드는 equals(Object obj)로 정의되어 있습니다. 따라서 이 메소드를 재정의하려면 동일하게 equals(Object obj)라는 시그니처를 가져야 합니다.
  2. 메소드 오버로딩(Overloading):

    • Overloading은 같은 이름의 메소드를 여러 개 두되, 매개 변수의 타입이나 개수가 달라야 할 경우 사용됩니다. 이런 경우에는 메소드의 이름은 같지만 시그니처가 다릅니다.
    • 질문에서 언급하신 equals(MyString)은 기존 equals(Object)와 시그니처가 다르기 때문에 재정의가 아닌 오버로딩으로 봐야 합니다.
  3. 오류 발생:

    • @Override 어노테이션은 정확히 재정의하는 경우에만 사용할 수 있습니다. equals(MyString)equals(Object)와 다르기 때문에 어노테이션을 붙일 수 없고, Overriding이 아닌 Overloading입니다.

해당 강의나 실습에서 equals 메소드를 재정의할 때, 반드시 equals(Object) 시그니처를 사용하여야 합니다. 그렇지 않으면 오버로딩이 됩니다.

관련된 질문과 강의에서 실습한 다른 부분도 검토해보시면 더 깊은 이해를 하실 수 있을 것입니다. 유사한 질문과 관련 자료는 다음과 같습니다:

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

compareTo를 사용하는 이유가 뭔가요?

0

45

1

[실습] MyString에 복사 생성자 추가

0

38

1

안녕하세요~ 회수라는 의미에 대해서 질문합니다.

0

71

1

TestEx 객체 생성 시 생성자 호출 질문

0

62

2

[MyString 실습 인스턴스 중복 생성 문의] MyString.setString(String param)

0

100

2

주소록 실습 3단계에서 막혔어서 조언을 구하려고 질문 드립니다.

0

85

2

해시 알고리즘 관련으로 질문이 있습니다.

0

73

2

21분 경 Old generation의 GC 설명 질문입니다.

0

102

3

임시 객체의 첫 번째 상황에 대한 질문

0

70

2

String 객체가 하나 더 생성되는 이유가 궁금합니다

0

189

3

하위 클래스와 상위 클래스의 생성자 순서

0

104

2

GC의 age와 관련하여 질문 있습니다.

0

97

2

Object Header 의 Klass word (39강 36:00)

0

115

2

method area는 이름이 class area가 아니고 왜 method aread인지 궁금합니다.

0

139

2

교안 p.305 'throw 필수' 질문

0

81

1

Metaspace에 대한 질문

0

257

2

clone() 메서드를 재정의함으로써 Deep copy로 구현한다로 이해하면 될까요?

0

120

2

MyListEx 질문드립니다.

1

136

1

part3 강의 개강

0

197

2

문자열 비교 강좌에서 문자열 선언 방법 간에 hashCode() 값 관련한 질문입니다.

0

222

2

상속과 오지랖의 콜라보 예제에서 clone() 메서드에 대한 문의드립니다.

1

182

2

보이지 않는 임시 객체의 자막 수정 요청

0

116

2

스레드 관련해서 질문이 있습니다.

0

203

1

metaspace 관련 문의드립니다.

0

199

2