layout: post
title: "상속과 확장의 차이"
date: 2022-02-15T00:00:00-00:00
author: sangyeop
categories: TIL
대신 확장을 지원한다. 무슨 말일까?
코드 예시를 보자
public class Main inherits Sub {
...
}
말 장난을 쳐 보았는데, 자바는 말 그대로 상속이 아니라 다음과 같이 확장을 지원한다
public class Main extends Sub {
...
}
어떤 차이가 있을까? 상속은 내가 물려받는 재산에 초점이 있다. 그러나 확장은 내가 해야 할 일에 초점이 있다. 이게 무슨 의미냐면 is-a
와 has-a
의 차이라고 할 수 있겠다.
상속은 has-a
에 가깝고 확장은 is-a
에 가깝다. 자바의 확장은 is-a
이기 때문에, 부모 객체를 확장한 자식 객체를 외부에서 봤을 때 여전히 부모 객체와 같게 보인다면 좋은 객체 지향 원칙을 준수하게 된 것이다.