본문 바로가기

알고리즘/Do it 알고리즘

Object 클래스

지난 글 : [알고리즘/Do it 알고리즘] - 이진트리와 이진검색트리

 

Object 클래스 이해하기

java의 모든 클래스에서 최상위 클래스인 Object에 대해 몇 가지 중요한 점을 이해하자.

 

java.lang 패키지

Object 클래스는 java.lang 패키지에 속한다. 그러므로 자바의 모든 프로그램에서 명시적으로 형 import를 하지 않아도 간단한 이름으로 나타낼 수 있다.

 

native 메서드 선언

getClass 등 몇 개의 메서드에 native를 붙여 선언하고 있다. 이렇게 선언하는 메서드는 윈도우, macOS, 리눅스 등의 플랫폼에 의존하는 부분을 구현하기 위한 특별한 메서드다. 일반적으로 자바 이외의 언어로 작성한다고 한다.

 

hashCode 메서드와 해시값

모든 클래스형의 인스턴스는 해시값이라 불리는 int형의 정숫값을 계산할 수 있도록 되어 있다. 해시값을 반환하는 것이 hashCode 메서드다. 여기서 해시값은 '해시 테이블에 저장할 때 인덱스가 되는 값'보다는 각 인스턴스를 구별하는 '식별 번호' 같은 것이다. 이 hashCode 메서드는 각 인스턴스에 대해 내부적으로 부여된 해시값을 반환하도록 정의되어 있다. 따라서 Object 클래스의 hashCode 메서드를 오버라이드하지 않고, 상속받고 있는 클래스형 인스턴스는 프로그램 쪽에서 특별히 따로 처리를 하지 않아도 내부에서 알맞은 해시값이 주어진다. 

 

사용자가 만든 클래스에서 hashCode를 정의할 때 해시값을 계산하는 방법은 사용자가 임의로 선택할 수 있다. 다만 동일 상태(전체 피드의 값이 동일한)의 인스턴스에는 동일한 해시값을 주고, 다른 상태의 인스턴스에는 다른 해시값을 주도록 계산하는 것이 일반적이다.

 

equals 메서드와 인스턴스의 등가성

equals 메서드는 참조하는 곳의 인스턴스가 같은지를 판단하는 메서드다. 같으면 true를, 그렇지 않으면 false를 반환한다. 이 메서드에서 수행하는 판단은 두 해시값의 정합성(서로 딱 들어맞음)을 확인하는 것이 원칙이다. 그러므로 equals 메서드를 정의할 때는 상황에 맞게 hashCode 메서드를 정의해야 한다.

 

toString 메서드

Object 클래스의 toString 메서드는 '클래스 이름@해시값'을 반환한다. 사용자가 만든 클래스에서 이 메서드를 오버라이드할 때는 클래스의 특성이나 인스턴스 상태를 나타내는 알맞은 문자열을 반환하도록 정의한다.

 

참고 서적 :

'알고리즘 > Do it 알고리즘' 카테고리의 다른 글

체인법  (0) 2022.07.25
해시법  (0) 2022.07.24
이진트리와 이진검색트리  (0) 2022.07.20
트리  (0) 2022.07.19
원형 이중 연결 리스트 만들기  (0) 2022.07.18