개발/Spring

자바 Object 클래스

728x90

기본적으로 아무런 상속을 받지 않으면 java.lang.Object 클래스를 확장한다.

 

자바에서 한번에 이중 상속을 받을 수 없지만, 여러 단계 상속을 받을 수 있다.

 

그러면 왜 Object 클래스의 상속을 받을까? 가장 큰 이유는 Object 클래스에 있는 메소드들을 통해서 클래스의 기본적인 행동을 정의할 수 있기 때문이다.

 

클래스는 이정도의 메소드는 정의되어 있어야 하고, 처리해줘야 한다. 는 것을 정의하는 작업이 필요하기 때문에 Object 클래스를 상속 받았다고 생각하면 된다.

 

Object 클래스에서 제공하는 메소드들의 종류는?

 

Object클래스에 선언되어 있는 메소드는 객체를 처리하기 위한 메소드와 쓰레드를 처리하기 위한 메소드로 나뉜다.

 

쓰레드는 프로그램이 실행되는 작은 단위 중 하나이다. 웹 애플리케이션 서버처럼 사용자의 요청을 동시에 받기 위해서는 여러 개의 쓰레드가 동작하여아만 정상적으로 동작할 수 있다.

 

 

clone() -> 객체의 복자본을 만들어 리턴한다.

equals() -> 현재 객체와 매개 변수로 넘겨받은 객체가 같은지 확인한다.

finalize() -> 현재 객체가 더 이상 쓸모가 없어졌을 때 가비지컬렉터에 ㅡ이해서 이 메소드가 호출된다 . 

getClass() -> 현재 클래스의 객체를 리턴한다.

hashCode()  -> 객체에 대한 해시코드 값을 리턴한다. 16진수로 제공되는 객체의 메모리 주소를 뜻한다

toString() -> 객체를 문자열로 표현하는 값을 리턴한다.

 

 

Object 클래스에서 가장 많이 쓰이는 toString() 메소드

 

toString() Object 클래스에 선언되어 있기 때문에, 어떤 ㅐㄱ체에서 메소드를 호출하여도 문제가 되지 않는다.

 

 

 

객체의 고유값을 나타내는 hashCode()

 

기본적으로 객체의 메모리 주소를 16진수로 리턴한다. 어떤 두개의 객체가 동일하면 hashCode값이 동일해야 한다.

따라서 equals() 메소드를 오버라이드 하면 hashCode() 메소드도 오버라이드 해서 동일한 결과가 나오도록 만들어야만 한다.

 

아래와 같은 규칙을 지켜야 한다.

 

자바 애플리케이션이 수행되는 동안에 어떤 객체에 대해서 이 메소드가 호출될 때에는 항상 동일한 결과값을 리턴해줘야 한다.

실행할때마다 같은 값일 필요는 없다

 

어떤 두개의 객체에 대해서 eqauls() 메소드를 사용하여 비교한 결과가 true인 경우에 두객체의 hashCode 메소드를 호출하면 동일한 값을 리턴해야한다.

 

두 객체를 equals() 메소드를 사용하여 비교한 결과 false

'개발 > Spring' 카테고리의 다른 글

ServletContextListner 구현  (0) 2021.04.09
JSP란  (0) 2021.04.07
자바 상속  (0) 2021.04.06
패키지와 접근 제어  (0) 2021.04.06
Serializable, NIO  (0) 2021.04.05