[Java] Object 클래스

2020. 6. 29. 19:35Language/Java

1. Object 클래스

모든 클래스의 최상위 클래스이다(java.lang.Object). 모든 클래스는 Object 클래스에서 상속받는다(컴파일 시 extends Object 키워드 사용). 모든 클래스는 Object 클래스의 메서드를 사용할 수 있다. 모든 클래스는 Object 클래스의 일부 메서드를 재정의하여 사용할 수 있다.

Object 클래스

※ getClass(), notify(), notifyAll(), wait()는 final로 선언된 메서드로 재정의 할 수 없다.

 

 

 

2. Object 응용

1) toString 메서드

재정의를 통해 주소값이 아닌 원하는 값을 추출한다.

ToStringTest

2) equals 메서드

두개의 인스턴스가 동일한지에 대한 여부를 출력한다. 물리적으로(주소) 다른 메모리에 위치한 객체라도 논리적으로(값) 동일함을 구현하기 위해 사용된다.

EqualsTest

3) hashCode 메서드

인스턴스가 저장된 가상머신의 주소를 10진수로 반환한다.

EqualsTest


※ 두개의 서로 다른 메모리에 위치한 인스턴스가 동일하다는 것은, 논리적으로 동일할 때와(equals 반환값이 true) 동일한 hashCode 값을 가질 때로 나뉘며 일반적으로 equals 메서드와 함께 재정의한다.
※ 실제 메모리 주소는 System.identifyHashCode(인스턴스)로 확인할 수 있다.

4) Clone 메서드

객체의 복사본을 생성한다. 기본 틀로(Prototype) 부터 같은 속성 값을 가진 객체의 복사본을 생성한다. 객체지향에서 정보은닉에 위배되는 가능성이 있으므로 복제할 객체는 cloneable 인터페이스 명시해야한다.

CloneTest

5) finalize 메서드

호출하는 메서드가 아닌 객체가 Heap 메모리에서 해제 될 때 가비지 콜렉터에서 호출되는 메서드이다. 일반적으로 리소스 해제, 소켓 닫기 등을 수행한다.


[참고] github.com/ozofweird/Java_Practice

728x90