만약 Object에서 제공하는 toString()이 없다면 객체의 정보를 출력하는데 어려움이 있을 수 있다.
예를 들면 클래스 별로 별도의 출력부가 필요하다.
public class BadObjectPrinter {
public static void print(Car car) { //Car 전용 메서드
String string = "객체 정보 출력: " + car.carInfo(); //carInfo() 메서드 만듬 System.out.println(string);
}
public static void print(Dog dog) { //Dog 전용 메서드
String string = "객체 정보 출력: " + dog.dogInfo(); //dogInfo() 메서드 만듬 System.out.println(string);
}
}
이렇게 BadObjectPrinter 클래스가 구체적인 Dog, Cat을 사용한다.
이것을 BadObjectPrinter가 Cat, Dog에 의존한다고 표현할 수 있다.
다행히도 자바에서는 객체의 정보를 출력할 때, 다형성과 메서드 오버라이딩을 활용할 수 있도록 도와준다
다형적 참조
메서드 오버라이딩
Open
Closed