"Object" 클래스가 가진 메소드 중 "toString"메소드가 있다.
물론 "Object"클래스의 모든 메소드는 모든 클래스가 사용가능하다.
"toString" 메서드는 객체가 가지고 있는 정보나 값들을 문자열로 리턴하는 메소드이다.
Object
그럼 Object 클래스는 무엇인가?
Object 클래스는 모든 클래스의 가장 최상위 클래스이다.
Java에서 제공하는 모든 클래스들의 계층 구조로 되어있고, 그 최상위로 올라가면 "Object"dlfksms zmffotmrk whswogksek.
우리가 일반적으로 생성하는 클래스도 "extends"로 직접 상속하지는 않지만
자바 컴파일러는 일반 클래스를 "Object"하위 클래스로 자동 설정하게 되어 있다.
즉, 자바 라이브러리나 유저가 만든 모든 클래스는 "Object" 클래스를 부모클래스로 상속 받아서 사용하게 된다.
toString()
toString
은 말 그대로 객체의 정보를 String(문자열)형으로 형변환 해준다.Object
클래스를 상속받은 클래스들은 toString()
부터 살펴보자. 예제로 Book
이라는 클래스를 만들어 테스트 해 볼 자.
Book은 따로 상속받는 클래스가 없으므로 자동으로 Object를 상속받는다.
public class Book {
int bookNumber;
String bookTitle;
Book (int bookNumber, String bookTitle) {
this.bookNumber = bookNumber;
this.bookTitle = bookTitle;
}
}
public class toStringEx {
public static void main (String[] args) {
Book book = new Book(100,"개미");
System.out.println(book);
System.out.println(book.toString());
}
}
/* 출력
object.Book@16f65612
object.Book@16f65612
*/
System.out.println에 참조 변수(Object형)을 넣으면 toString()
이 자동으로 호출된다.
출력결과의 @ 기준로 좌측은 클래스의 이름 을 나타내고, 우측은 해시코드 값을 나타낸다.
해시코드란, 해시 함수에 의해 자동으로 생성된 값인데 객체를 유일하게 식별할 수 있는 정수 값이다.
toString() 재정의 하기
Book클래스에서 toString메서드를 사용했을 때 해시코드 값이 아니라 사용자가 원하는 문자열을 출력하도록 메서드를 재정의해보자.
public class Book {
int bookNumber;
String bookTitle;
Book (int bookNumber, String bookTitle) {
this.bookNumber = bookNumber;
this.bookTitle = bookTitle;
}
@Override
public String toString() {
System.out.println(bookTitle+" "+bookNumber);
}
}
public class toStringEx {
public static void main (String[] args) {
Book book = new Book(100,"개미");
System.out.println(book);
System.out.println(book.toString());
}
}
/* 출력
개미 100
개미 100
*/
Book클래스에 위와 같이 오버라이딩 코드를 추가하고, 다시 테스트해보면 해시코드 대신에 책제목과 책번호가 출력되는 것을 볼 수 있다.
'Java' 카테고리의 다른 글
[Java] Enum (0) | 2022.10.06 |
---|---|
[Java] equals() 와 hashCode (0) | 2022.10.06 |
[자바] super와 super() (0) | 2022.10.02 |
[자바] 오버라이드(Override) (0) | 2022.10.01 |
[자바] 캐스팅-업캐스팅, 다운캐스팅 (0) | 2022.10.01 |