public String toString() 의 의미

이정연·2023년 7월 4일

자바기초

목록 보기
15/25

자바를 공부하다보면 public String toString()을 자주 마주치게 된다.

이 것을 응용해서 사용하는방법과 용법에 대해서 이해한 바를 나타내고자 한다.

다음과 같은 클래스가 있다고 하자.

class Coffee {
    int price;

    public Coffee(int price){
        this.price = price;
    }
}

class Americano extends Coffee{
    public Americano(){
        super(4000);
    }

    public String toString(){
        return "아메리카노";
    }
}

class Customer {
    int money = 50000;

    void buyCoffee(Coffee coffee){
        if(money < coffee.price){
            System.out.println("잔액이부족합니다");
        }
        money = money - coffee.price;
        System.out.println(coffee + "를 구입했습니다.");
    }
}
  • 위의 Americano 클래스는 Coffee 클래스를 상속받고있다.
  • 그렇기 때문에 super()메서드로 Coffee 클래스의 생성자를 이용할 수 있다.
  • 그리고 Customer 클래스의 buyCoffee 메서서드에서는 Coffee클래스를 참조변수로 받고있는데, 이때 우리는 Americano 클래스를 이용할 수 있다.

Americano 클래스에 보면, public String toString() 메서드가 보인다. 이것은 어떤 방법으로든 Americano 객체를 호출했을 때 내부의 글귀가 노출되게 한다.

  • 실행
public class Main {
    public static void main(String[] args) {
        Customer customer = new Customer();
        customer.buyCoffee(new Americano()); 
        
        System.out.println("현재 잔액은" + customer.money + "원 입니다.");
    }
}

Customer 클래스의 buyCoffee메서드를 보면 System.out.println 에서 coffee를 호출한다.

  • 실행에서 보면 buyCoffee의 참조변수로 Americano 클래스를 받고있다.
  • 이 상태에서 coffee를 호출하게되면 Americano 클래스 내부의 toString메서드가 자동으로 호출되어 coffee 대신에 "아메리카노"가 들어간다.

결론

정리하자면, 우리는 클래스 내부에서 public String toString()메서드를 선언해서 System.out.println(인스턴스의 이름)을 호출했을 때 출력 될 문자열을 지정할 수 있다.

profile
반갑습니다.

0개의 댓글