Object와 OCP

SungMin·2026년 5월 23일

자바 심화 정리

목록 보기
5/34

만약 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에 의존한다고 표현할 수 있다.

다행히도 자바에서는 객체의 정보를 출력할 때, 다형성과 메서드 오버라이딩을 활용할 수 있도록 도와준다


다형적 참조

  • Car, Dog 인스턴스를 포함한 모든 객체의 인스턴스를 인수로 받을 수 있다.

메서드 오버라이딩

  • Object 클래스는 모든 클래스의 부모다.
    따라서 Object가 가지고 있는 toString() 메서드를 오버라이딩 할 수 있다.

OCP 원칙

Open

  • 새로운 객체 타입을 추가하고 toString()을 오버라이딩해서 기능을 확장할 수 있다.

Closed

  • 새로운 클래스가 추가되어도 기존 출력 코드를 수정하지 않아도 된다.

[정리]

  • Object.toString()은 다형성과 오버라이딩을 활용해 객체 정보를 공통 방식으로 출력할 수 있게 해준다
profile
오늘도 한 걸음씩 나아가

0개의 댓글