article thumbnail image
Published 2022. 9. 8. 13:45
반응형

오브젝트 클래스는 우리가 모르게 이미 상속을 받아 사용하고 있는 클래스이다

 

선언부를 보면 이미 딱히 extends로 키워드를 쓰지 않았는데도 말입니다 

써도 되고 안써도 됩니다 ㅎㅎ 이미 우리는 상속을 받고있어요 

 

그럼 왜 상속을 받아서 써야하나 궁굼합니다 

 

그 이유는 바로 모든 클래스의 조상인 오브젝트 클래스가 갖고있는 클래스를 사용하기 

위해서 입니다 

공통적으로 상요할만한 기능들이 들어가있는것이죠 기능은 즉 메서드입니다 

여러분이 자바 api 문서에서 Object 클래스를 보면 아마 clone, equals

이러한 메서드 들이 보일것입니다 

 

이게 생성하지 않더라도 사용 할 수 있는 이유가 바로 오브젝트 클래스에 이미 다 

정의 되어있기 때문입니다 

 

이중에 가장 많이 쓰이는것은 아마 제 경험으로는 quals 와 toString 입니다 

먼저 toString 입니다 

 

이미 만들어져있는 메서드를 오버로딩 해서 사용해보도록  합시다 

자 인스턴스를 출력하니 주소값이 나오죠 근데 우리는 그 안에 들어있는 주소와 이름을 확인

하고싶습니다 

 

같은 소스코드인데 결과가 다르네요 ? 비밀은 Person 클래스에 있습니다 

주소와 이름을 출력해주는 toString메서드를 오버로딩 했습니다 ㅎㅎ

 

다음은 equals 입니다 

이거 굉장히 중요하고 자주 햇갈리는 것이기에 제대로 확인합시다 

결과는 당연히 true라고 생각하겠지만 절대아닙니다 전혀 다른 값입니다 ㅎㅎ

이유는 서로 다른 객체이기때문입니다 같은값을 갖고있고 같은 구조이지만 전혀 다른것이라는 뜻이죠

왜냐하면 주소값이 다른 엄연히 다른 객체 이니까요 

 

그리고 가장 중요한 == 와 equals 는 뭐가 다를까 입니다 

결론적으론 주소값의 비교와 내용의 비교 입니다 

equals는 비교하고자 하는 대상의 내용을 비교 하지만 

== 는 연산자 이고 비교하고자 하는 대상의 주소값을 비교하는것입니다 

Call by Reference 와 Call By Value 에 대한 내용을 확인해보시기를 추천합니다 

 

반응형

'Developer > Java' 카테고리의 다른 글

[java]자바 문자열 다루기  (0) 2022.09.15
[java]필수 개념  (0) 2022.09.13
[java] hashmap 오름차순, 내림차순정렬  (0) 2022.08.29
[java]equals  (0) 2022.08.26
[java] 제네릭  (0) 2022.08.25
복사했습니다!