[JAVA] Object 클래스와 toString()메서드

DANI·2023년 10월 4일
0

JAVA를 공부해보자

목록 보기
8/29
post-thumbnail

📕 Object 클래스란?

모든 클래스의 가장 최상위 클래스인 "Object" 클래스

JAVA에 제공하는 모든 클래스들의 계층 구조로 되어있고, 그 최상위로 올라가면 "Object"이라는 클래스가 존재한다.
우리가 일반적으로 생성하는 클래스도 "extends"로 직접 상속하지는 않지만 자바 컴파일러는 일반 클래스를 "Object"하위 클래스로 자동 설정한다.

즉, 자바 라이브러리나 유저가 만든 모든 클래스는 "Object" 클래스를 부모클래스로 상속 받아서 사용한다.



📕 toString()메서드란?

"Object"클래스가 가진 메소드 중 하나로 모든 메소드는 모든 클래스가 사용이 가능하다.

"toString()" 메서드는 객체가 가지고 있는 정보나 값들을 문자열로 만들어 리턴해주는 메서드

Object클래스를 상속받은 클래스들은 toString()메서드는 오버라이딩(재정의)하여 사용할 수 있다. 자주 쓰이는 String이나 Integer클래스에는 toString()이 이미 재정의 되어 있다.

먼저 Object클래스의 toString()부터 살펴보자.


💻 Object 클래스의 toString()

package ObjectMethod;

class Book {
	  int bookNumber;
	  String bookTitle;

	  Book (int bookNumber, String bookTitle) {
		  this.bookNumber = bookNumber;
		  this.bookTitle = bookTitle;
	  }
}

public class ToStringExample {
	public static void main(String[] args) {
		Book book = new Book(1, "상실의 시대");
		System.out.println(book);
		System.out.println(book.toString());
	}
}

🔵 실행 결과

ObjectMethod.Book@24d46ca6
ObjectMethod.Book@24d46ca6

출력결과의 @를 기준으로 좌측은 클래스의 이름을 나타내고, 우측은 해시코드 값을 나타낸다. 해시코드란, 해시 함수에 의해 자동으로 생성된 값인데 객체를 유일하게 식별할 수 있는 정수 값이다.

book을 그대로 출력한 결과와 book.toString()의 출력결과가 같다. System.out.println에 참조 변수(Object형)를 넣으면 toString()이 자동으로 호출된다.


💻 toString() 재정의 하기

package ObjectMethod;

class Book {
	  int bookNumber;
	  String bookTitle;

	  Book (int bookNumber, String bookTitle) {
		  this.bookNumber = bookNumber;
		  this.bookTitle = bookTitle;
	  }
	  
	@Override
	public String toString() {
		  return this.bookTitle;
	  }
}

public class ToStringExample {
	public static void main(String[] args) {
		Book book = new Book(1, "상실의 시대");
		System.out.println(book);
		System.out.println(book.toString());
	}
}

🔵 실행 결과

상실의 시대
상실의 시대

✅ Object의 toString()은 해시코드가 출력된다!



💻 String 클래스와 File 클래스의 toString() 메서드

package Method;

import java.io.File;

public class ToString {
	public static void main(String[] args) {
		String str = new String("안녕하세요");
		File file = new File("C\\test");
		
		System.out.println(str.toString());
		System.out.println(file.toString());
	}
}

🔵 실행 결과

안녕하세요
C\test
  • "String" 클래스 객체의 "toString"메소드는 자신이 가진 값을 그대로 리턴

  • "File"클래스 객체의 "toString"메소드는 자신이 가진 해당 경로값을 리턴

커서를 대면 상세설명에 오버라이드 됐다는 설명이 있다.

✅ String 클래스와 File 클래스는 toString() 메서드가 재정의 되어 있다!

0개의 댓글