Java - Object와 OCP

c.Hano·2024년 11월 20일

자바

목록 보기
3/17

최상위 부모 클래스인 Object 가 없다면 객체 생성을 하고 객체의 참조값을 얻고 싶을 때 일일히 해당 메서드의 기능을 구현 했어야 할 것이다.

하지만 Object 클래스의 존재로 많이 쓰는 기능들을 자바는 이미 구현해 놓았다.

새로운 객체를 생성하거나 toString()메서드를 오버라이딩을 하여도 (Open) Object 내부 클래스의 메서드를 변경을 하지 않아도 된다(Close). Object 내부 메서드의 기능을 새로운 객체가 사용이 가능하다.

OCP 원칙.
  • open : 새로운 클래스를 추가하고, toString()을 오버라이딩 해서 기능을 확장 할 수 있다.
  • close : 새로운 클래스를 추가하여도 Object와 toString()을 사용하는 클라이언트 코드를 변경하지 않아도 된다.

System.out.println()은 Object를 사용하는 클라이언트 클래스이다. 외부에서 System.out.println을 호출하면 println() 메서드가 toString()을 호출하게 되고 ()안의 값이 출력이 된다. 외부에서 호출하는 객체는 Object 클래스를 부모로 두고 있기 때문에 println() 과 Object 클래스와 호출하는 객체는 OCP 법칙과 다형적 참조를 완벽하게 활용하고 있다고 볼 수 있다. (클라이언트 메서드 인 println()의 내부 값은 변하지 않기 때문)

OCP, 다형적 참조 놀라워!!! 대단해!!!!

참고. 정적의존관계, 동적의존관계.

정적의존관계 : 클래스 내에서 사용하는 타입을 보면 쉽게 의존(사용)관계 파악이 가능.
동적의존관계 : 프로그램을 실행해야 확인할 수 있다. main(Object obj) 메서드를 외부에서 호출할 때 Dog인스턴스가 들어갈지 Car인스턴스가 들어갈지 모르기 때문.

profile
꼬질이

0개의 댓글