[Java 개발] 제26회 Object 클래스

Java입문강좌

시작하며

여러분 안녕하세요!

DreamHanks의 254cm입니다.

이번 시간에는 Object 클래스에 대해서 알아보도록 하겠습니다.

Java의 전체 기사는 여기를 클릭해 주세요.

이전 기사는 [Java 개발] 제25회 enum에 대해서 배워 봤습니다.

Object 클래스란?

Object 클래스는 모든 Java 클래스의 최고위 부모 클래스입니다.

extends 키워드로 직접 상속받지는 않았지만 모든 클래스는 Object 클래스를 상속받고 있습니다.

그래서 어떤 클래스든 Object 클래스의 메서드를 이용할 수 있습니다.

 

Object 클래스의 주요 메서드

〇toString 메서드

Object 클래스의 toString 메서드는 호출원 정보를 반환하는 메서드입니다.

반환되는 정보는 「클래스명@주소값의 해시 코드」입니다.

하지만 다른 자바 API클래스는 to String 메서드를 오버라이드해서 사용하기 때문에 반환하는 정보가 다릅니다.

 

샘플

위와 같이 to String 메서드가 존재하지 않는 클래스도

Object 클래스를 상속 받았기 때문에 toString 메서드를 사용할 수 있습니다.

물론 배열도 Object 클래스를 상속을 받았기 때문에 toString 메서드를 사용할 수가 있습니다.

하지만 List와 같은 Java API클래스는 Object의 메서드를 오버라이드하여 사용하기 때문에 반환하는 정보가 다릅니다.

 

출력 결과

 

〇equals 메서드

equals 메서드는 두 인스턴스를 주소를 비교하고 동일한 주소를 참조하는지 검사하는 메서드입니다.

equals 메서드는 기본적으로 인스턴스 주소의 해시 코드를 비교하고 결과를 판정합니다.

 

샘플

다른 클래스의 hash Code 메서드는 인스턴스의 메모리 주소의 해시 코드를 반환하는데,

String 클래스는 문자열 값의 해시코드를 반환하기 때문에 메모리 주소가 달라도 문자열 값이         동일하면 equals 메서드가 true를 반환합니다.

 

출력 결과

 

〇finalize 메서드

아무도 참조하지 않는 인스턴스의 데이터를 지울 때 호출되도록 약속된 메서드입니다.

하지만 이 메서드를 직접 사용하는 것보다 Garbage Collector가 데이터를 삭제하도록 놔두는 것을 권장합니다.

왜냐하면 Java에서는 finalize 메소드가 불렸을 때 부모클래스의 finalize 메소드를 호출하지 않습니다.

그렇기 때문에 아이 클래스의 데이터만 파괴되고 부모 클래스의 데이터는 메모리상에 그대로 존재할 가능성이 있습니다.

 

상기의 메소드 이외에도 쓰레드의 운용을 위한 메소드등이 존재합니다만, 이번 기사에서는 다루지 않습니다.

 

끝으로

이번 기사는 이상입니다.

다음번에는 Lambda를 배워보겠습니다.

방문해 주셔서 감사합니다.

 

コメント