보라제비꽃
98
2020-08-01 18:14:56
2
120

java object equals에 대해 질문 드립니다.



혼자서 복습하다가

갑자기 벽에 텅 하고 부딪혀서

이것저것 찾아보고

혼자 인강도 2~개 보면서 공부한건데


확신이 들질 않아서

제가 제대로 이해 한 게 맞는 지 궁금해서 질문 드려봅니다.




조금 지저분한데..


1. 제가 지금 표시한 색깔 박스와 화살표 방향으로

객체가? 이동하는게 정확히 맞는 건가요??

이 부분은 다른 거 공부할때도 항상 공부해보는데 아직도 헷갈리네요..


어째든 그래서 결국

if(id.equals(member.id)에서

id는 obj1의 id 값이 되고

member.id는 변환을 거친 odj2와 odj3의 id 값이 맞는 지 궁금합니다.


2. 결과 값에 대해

결과가 1과 2는 같고

1과 3은 다르다

라고 나옵니다


이는 결국 1과 2는 동등 객체이고

1과 3은 그렇지 않기 때문인게 맞나요??


3. 재정의에 대해


equals 메소드 대입시

Object 타입의 obj는 Member 타입의 부모가 된다(상속)

따라서 instanceof = true


이때 강제 형변환이 이뤄지만

부모의 메소드, 필드만 사용이 가능하므로

자식의 String id를 사용하기 위해 강제 변환이 필요


따라서 obj2와 obj3는

1과 같은 Member 타입이 된다.

(new 연산자로 다른 주소를 갖고 있던 게 같은 주소가 되는 게 맞나요?? 이 부분은 아직 조금 의문이네요..)


아직도 많이 부족하다는 게 느껴집니다..ㅠㅠ

다른 분들은 국비 2개월 반쯤 공부했으면 이 정도는 슉슉 하시는 거 같은데..ㅠㅠ

0
0
  • 답변 2

  • freestyle
    3k
    2020-08-01 19:58:08

    사용자가 정의한 클래스의 객체들이 값이 같다고 보는 조건을 "타입과 id 라는 필드 값이 같을 때"라고 작성한 것이 아닌가요? 

    "동등 객체"를 어떤 의미를 썼는지는 모르겠지만 아마 1과 2를 == 연산자로 비교하면 false가 나올 겁니다. 생성된 객체가 하나이고 그것을 가리키는 레퍼런스가 다른 것인지, 아니면 생성된 객체가 두 개이고 값만 같은 것인지를 구별해야 될 듯 싶네요.


    0
  • 보라제비꽃
    98
    2020-08-01 20:24:36

    freestyle 

    어디서부터 잘 못 된 거지...하..ㅠ

    처음부터 다시 하겟ㅅ브니다


    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.