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@15db9742toString()을 오버라이딩함으로써, 객체의 상태를 설명하는 의미 있는 출력을 제공할 수 있습니다:
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() 메서드는 객체를 출력하거나 문자열과 연결할 때 자동으로 호출됩니다. 이는 추가적인 코드를 작성하지 않고도 객체의 내용을 빠르게 확인할 수 있게 해주어 디버깅을 훨씬 쉽게 만들어 줍니다.
챌린지
쉬움커스텀 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() 메서드를 호출할 것입니다!)
}
}
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
객체 지향 프로그래밍의 모든 레슨
4상속
상속의 기초 (extends)super 키워드메서드 오버라이딩 (@Override)생성자 체이닝Object 클래스단일 및 다중 레벨 상속다중 클래스 상속이 불가능한 이유요약 - 직원 계층 구조7특별한 메서드와 Object 클래스
toString() 메서드equals()와 hashCode()clone() 메서드compareTo()와 ComparableComparator 인터페이스요약 - 커스텀 정렬