Object 클래스가 최상위 클래스인 이유는 객체들의 공통적인 기능을 제공하기 위함이다.
그렇다면 Object 클래스가 가지고 있는 기능 중 하나인 toString은 어떻게 쓰는걸까?
toString
Object.toString 메서드는 객체의 정보를 문자열 형태로 제공한다. 그래서 디버깅과 로깅에 유용하게 사용된다.
Object.toString() 메서드가 클래스 정보와 참조값을 제공하지만 이 정보만으로는 객체의 상태를 적절히 나타내지 못한다. 그래서 보통 toString()을 재정의(오버라이딩)해서 보다 유용한 정보를 제공하는 것이 일반적이다.
쓰는 방법은 간단하다. Object 클래스에서 toString()을 Override 한 후 재정의해서 쓰면 되는 것이다.
class Dog{
private String dogName;
public Dog(String dogName){
this.dogName = dogName;
}
// Object클래스에서 toString()을 메소드 오바라딩하여 재정의 한 후 객체에 대한 내용을 쓰면 됨
@Override
public String toString() {
return "dogName = " + dogName;
}
}
이렇게하면 dog 인스턴스 생성 후 dog.toString 하면 생성된 인스턴스의 dogName을 볼 수 있는 것이다.
그런데 toString 재정의 후 객체의 참조값을 알고 싶다면,,?
toString을 재정의하는 경우 객체의 참조값을 출력할 수 없다. 이 때는 System.identityHashCode()를 사용하면 된다.
위에서 만든 dog 인스턴의 참조값을 알고 싶다면
Integer.toHexString(System.identityHashCode(dog))
쓰면 되는 것이다.
정리
Object 클래스가 최상위 클래스인 이유는 객체들이 공통적으로 쓰는 기능을 쓰기 위함
그 기능 중 하나인 toString이 있음.
toString()은 객체의 상태를 보여주는 용으로 제공하는 것이 일반적임.
toString를 오버라드 한 후 객체의 정보를 보여주도록 재정의 한 후 쓰면 되는 것이다.