자바 Object클래스의 메소드 toString()에 대해서 알아보자.
Object클래스
java.lang패키지는 자바프로그래밍에 가장 기본이 되는 클래스들을 포함하고 있다. 그래서 java.lang패키지의 클래스들은 import문 없이도 사용할 수 있게 되어있다. Object클래스는 모든 클래스의 최고 조상이기 때문에 Object클래스의 멤버들은 모든 클래스에서 바로 사용가능하다. Object클래스는 멤버변수는 없고 오직 11개의 메소드만 가지고 있다.
toString() 메소드
이 메소드는 인스턴스에 대한 정보를 문자열(String)로 제공할 목적으로 정의한 것이다. Object클래스에 정의된 toString()은 아래와 같다.
public String toStrin() { return getClass().getName()+"@"+Integer.toHexString(hashCode()); }
클래스를 작성할 때 toString()을 오버라이딩 하지 않는다면, 클래스의 이름과 그 값이 저장된 위치를 알려주는16진수 해시코드를 얻게된다.
ex)
클래스의 이름은 같아도 new연산자로 서로 다른 인스턴스에 대해서 toString()을 호출했기 때문에 해시코드 값이 다르다.
오버라이딩 된 toString() 메소드
String클래스의 toString()은 String인스턴스가 갖고있는 문자열을 반환하도록 오버라이딩 되어있고, Date클래스의 경우는 Date인스턴스가 갖고있는 날짜와 시간을 문자열로 반환하도록 오버라이딩 되어있다.
이처럼 toString()은 일반적으로 인스턴스나 클래스에 대한 정보 또는 인스턴스 변수들의 값을 문자열로 변환하여 반환하도록 오버라이딩되는 것이 보통이다.
ex)
Card인스턴스의 toString()을 호출하면 인스턴스변수 kind와 number의 값을 문자열로 변환하여 반환하도록 toString()을 오버라이딩했다. 오버라이딩할 때 주의점은, 조상에 정의된 메소드를 자손에서 오버라이딩할 때는 조상에 정의된 접근범위보다 같거나 더 넓어야한다. 여기서 특이점은 toString은 println()메소드에 객체명만 입력해도 자동 호출된다.
'언어공부 > Java' 카테고리의 다른 글
자바 String클래스의 다양한 메소드 (0) | 2021.05.23 |
---|---|
자바 String 클래스, 문자열 리터럴(String리터럴), String클래스의 메소드 -equals()메소드, equalsIgnoreCase()메소드 (0) | 2021.05.22 |
자바 Object클래스의 메소드 - equals() (0) | 2021.05.20 |
자바 인터페이스(Interface) (0) | 2021.05.19 |
자바 final 키워드 (0) | 2021.05.18 |