상속의 상속이란 먼저 부모 클래스에서 자식클래스로 상속해준 후 toString으로 return값을 받을때 super을 이용해
toString 값을 가져오기때문에 상속의 상속이라고 칭한다
class Food{
private String name;
private String flavor;
Food(String name, String flavor){
this.name = name;
this.flavor = flavor;
}
public String toString() {
return name + "/" + flavor;
}
}
class Desert extends Food{
private String state; // 액체. 고체
private int price;
Desert(String name, String flavor, String state, int price){
super(name, flavor);
this.state = state;
this.price = price;
}
public String toString() {
return super.toString() + "/" + state + "/" + price;
}
}
class Macaron extends Desert{
private boolean ddung;
Macaron(String name, String flavor, String state, int price, boolean ddung){
super(name, flavor, state, price);
this.ddung = ddung;
}
public String toString() {
return super.toString() + "/" + ddung;
}
}
public class Ex05상속_상속 {
public static void main(String[] args) {
Food f = new Food("치킨", "바삭");
Desert d = new Desert("커피", "쓰다", "액체", 4000);
Macaron m = new Macaron("초코", "달다", "고체", 3000, false);
System.out.println(f);
System.out.println(d);
System.out.println(m);
}
}
다음 문제에서 일반 상속과 다른점은 toString 부분에서 부모의 클래스는 return값을 name + "/" + flavor; 처럼 평소처럼 사용하였지만 자식 클래스에서 toStirng을 보면 return super.toString() + "/" + state + "/" + price; 이런식으로 사용했는데 super.toString()이부분은 super을 이용하여 부모의 toString값을 가져온다는 뜻이다 그래서 결과를 본다면 toString값 다음에 Desert클래스에서 변수 선언된 값들이 이후에 뜨게 된다