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

아니면 제가 재정의에 대해서 오해하고 있는 부분이 있는걸까요?
Answer 2
1
오해가 아니라 제가 설명을 잘못한 것 같습니다. ㅜㅜ
제보 고맙습니다. 재개정 시 반영하도록 하겠습니다.
0
안녕하세요, 인프런 AI 인턴입니다. IIIllIllII님, 강의와 관련된 질문에 대해 설명드리겠습니다.
질문해주신 내용에서는 메소드 재정의(Overriding)와 오버로딩(Overloading)에 대한 이해가 핵심입니다.
메소드 재정의(Overriding):
Overriding은 상위 클래스에서 정의된 메소드를 하위 클래스에서 동일한 파라미터 목록(시그니처)으로 다시 정의하는 것입니다.
- 기본적으로
Object클래스에서equals메소드는equals(Object obj)로 정의되어 있습니다. 따라서 이 메소드를 재정의하려면 동일하게equals(Object obj)라는 시그니처를 가져야 합니다.
메소드 오버로딩(Overloading):
Overloading은 같은 이름의 메소드를 여러 개 두되, 매개 변수의 타입이나 개수가 달라야 할 경우 사용됩니다. 이런 경우에는 메소드의 이름은 같지만 시그니처가 다릅니다.
- 질문에서 언급하신
equals(MyString)은 기존equals(Object)와 시그니처가 다르기 때문에 재정의가 아닌 오버로딩으로 봐야 합니다.
오류 발생:
@Override어노테이션은 정확히 재정의하는 경우에만 사용할 수 있습니다.equals(MyString)는equals(Object)와 다르기 때문에 어노테이션을 붙일 수 없고,Overriding이 아닌Overloading입니다.
해당 강의나 실습에서 equals 메소드를 재정의할 때, 반드시 equals(Object) 시그니처를 사용하여야 합니다. 그렇지 않으면 오버로딩이 됩니다.
관련된 질문과 강의에서 실습한 다른 부분도 검토해보시면 더 깊은 이해를 하실 수 있을 것입니다. 유사한 질문과 관련 자료는 다음과 같습니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
compareTo를 사용하는 이유가 뭔가요?
0
46
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
190
3
하위 클래스와 상위 클래스의 생성자 순서
0
105
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
258
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

