Menu
Coddy logo textTech

toString() 메서드

Coddy Java 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 87개 중 41번째.

Java의 모든 클래스는 Object 클래스로부터 상속받으며, 이 클래스는 여러 유용한 메서드를 제공합니다. 가장 흔히 오버라이드되는 메서드 중 하나는 객체의 문자열 표현을 반환하는 toString()입니다.

기본적으로, toString()은 클래스 이름 뒤에 객체의 해시 코드가 붙은 값을 반환하며, 이는 그리 유용하지 않습니다:

public class Person {
    private String name;
    private int age;
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

Person p = new Person("Alice", 25);
System.out.println(p);  // Person@15db9742

toString()을 오버라이딩함으로써, 객체의 상태를 설명하는 의미 있는 출력을 제공할 수 있습니다:

public class Person {
    private String name;
    private int age;
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    @Override
    public String toString() {
        return "Person[name=" + name + ", age=" + age + "]";
    }
}

Person p = new Person("Alice", 25);
System.out.println(p);  // Person[name=Alice, age=25]

toString() 메서드는 객체를 출력하거나 문자열과 연결할 때 자동으로 호출됩니다. 이는 추가적인 코드를 작성하지 않고도 객체의 내용을 빠르게 확인할 수 있게 해주어 디버깅을 훨씬 쉽게 만들어 줍니다.

challenge icon

챌린지

쉬움

커스텀 toString() 구현을 사용하여 아이템에 대한 의미 있는 정보를 표시하는 제품 인벤토리 시스템을 구축해 봅시다. 각 제품에 대해 명확하고 읽기 쉬운 표현을 제공하도록 기본 toString() 메서드를 오버라이드하는 Product 클래스를 만들 것입니다.

코드는 두 개의 파일로 구성됩니다:

  • Product.java: 인벤토리 아이템을 나타내는 클래스를 생성합니다. 각 Product는 세 개의 private 필드를 가집니다: name (String), price (double), 그리고 quantity (int). 세 필드를 모두 초기화하는 생성자를 포함하세요. toString() 메서드를 오버라이드하여 Product[name=X, price=Y, quantity=Z]와 같은 정확한 형식의 문자열을 반환하도록 하세요. 여기서 X, Y, Z는 실제 필드 값입니다. 가격은 일반 숫자(특별한 포맷팅 없음)로 표시되어야 합니다.
  • Main.java: 제품을 생성하고 표시하여 Product 클래스를 실제로 작동시켜 보세요. 제품 이름(String), 가격(double), 수량(int)의 세 가지 입력을 받게 됩니다. 이 값들로 Product 객체를 생성한 다음, System.out.println()을 사용하여 제품 객체를 직접 출력하세요. 오버라이드된 toString() 메서드 덕분에, 이해하기 어려운 기본 출력 대신 포맷팅된 제품 정보가 자동으로 표시될 것입니다!

제품 이름(String), 가격(double), 수량(int)의 세 가지 입력을 받게 됩니다.

객체를 직접 출력할 때 toString() 메서드가 자동으로 호출되는 방식에 주목하세요. 이것이 실제 애플리케이션에서 디버깅과 로깅을 훨씬 쉽게 만들어 주는 이유입니다!

직접 해보기

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // 입력값 읽기
        String name = scanner.nextLine();
        double price = scanner.nextDouble();
        int quantity = scanner.nextInt();
        
        // TODO: 입력된 값들로 Product 객체 생성하기
        
        // TODO: product 객체를 직접 출력하기
        // (이것은 자동으로 당신의 toString() 메서드를 호출할 것입니다!)
    }
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

객체 지향 프로그래밍의 모든 레슨