class Product {
int price;
int bonusPoint;

Product(int price) {
this.price = price;
bonusPoint = (int) (price/10.0);
}
}

class Tv extends Product {
Tv() {
super(100);
}

public String toString() {
return "TV";
}
}

class Computer extends Product{

Computer(){
super(200);
}
public String toString() {
return "Computer";
}
}

class Buyer {
int money = 1000;
int bonusPoint = 0;

void buy(Product p) {
if(money<p.price) {
System.out.println("잔액이 부족하여 물건을 살수 없습니다.");
return;
}
money -= p.price;
bonusPoint += p.bonusPoint;
System.out.println(p + "/를 구입하셨습니다.");
}

}

class PolyArgumentTest{
public static void main(String[] args) {
Buyer b = new Buyer();

b.buy(new Tv());
b.buy(new Computer());

System.out.println("현재 남은 돈은 " + b.money + "만원입니다.");
System.out.println("현재 보너스 점수는" + b.bonusPoint + "점입니다.");
}
}



여기에서 왜 출력하면


TV을/를 구입하셨습니다.

Computer을/를 구입하셨습니다.

현재 남은 돈은 700만원입니다.

현재 보너스 점수는30점입니다.


이렇게 나오는거임?


합리적인 유추로는 public String toString() 이 메소드가 문자열 반환해주는 것 같은데


호출 한 적이 없음 ..