자바기초
자바 상속과 구성
yb12
2020. 4. 28. 10:22
상속은 서로 다른 두 클래스를 부모 클래스 자식 클래스로 나누어 부모 클래스에 있는 필드와 메서드를 자식 클래스가 사용할 수 있게 한다. 상속을 사용하면 중복된 코드를 줄일 수 있고 유지 보수하기에 편리하다.
하지만 무분별한 상속은 코드를 복잡하게 만들고 여러가지 문제를 야기할 수 있다.
그럴 때 사용하는 것이 구성(compositon)이다.
기존의 부모클래스로 하려 했던 클래스의 주소 값을 참조하는 private 필드를 자식 클래스로 만들려 했던 클래스에 만드는 패턴을 구성이라고 한다. 새로운 클래스의 메서드들은 기존 클래스(부모 클래스로 하려 했던)에서 필요한 메서드를 호출하면 된다. 이를 전달이라고 하고 해당 메서드를 전달 메서드라고 한다. 구성은 기존 클래스의 세부 구현과 상관없기 때문에 기존 클래스가 수정되어도 영향을 미치지 않는다.
상속은 Is-A 관계가 성립할때만 사용하는 것이 좋고 Is-A관계가 성립해도 상위와 하위 클래스가 다른 패키지에 있거나 상속을 위한 클래스가 아니라면 하위 클래스는 깨지기 쉬워진다. 이런 문제가 있다고 파악된다면 상속 대신 구성 방식을 사용하는 게 좋다.