도서 링크 : (https://product.kyobobook.co.kr/detail/S000001550352)
도서 링크 : (https://product.kyobobook.co.kr/detail/S000001033066)
도서 링크 : (https://product.kyobobook.co.kr/detail/S000200311846)
- 상속 : 코드를 재사용하기 위함, 하위 클래스가 상위 클래스의 코드를 재활용하는 것
- Template Method는 하위에서 상위를 몰라도 되기 때문에 해당 문제와 관련 없음
- 상위에서 큰 틀 잡고 하위에서 세부 내용 결정
- 하위에서 상위의 멤버를 사용하는 경우, 해당 상위 클래스의 정보를 명확하게 알아야한다. 그래야 프로그래밍 오류가 발생하지 않음
- 즉, 하위와 상위가 서로 엮어버렸기 때문에 캡슐화를 저해할 수 있다.
- 하위를 통해서 상위를 접근하기 때문
- 이런 문제 때문에, sealed class 개념이 등장함
- sealed class : 자손의 개수를 제한하는 클래스, 외부에서 함부로 클래스 추가 못함, State 패턴과 유사함
- 결과적으로 상속을 활용하면 캡슐화 파괴가 발생할 수 있다
- 클래스의 관계는 크게 2가지가 있다.
- 포함, 상속
- 포함에는 크게 2가지로 구분된다
- composite(A-B)/aggregation(A-List< B >)
- 포함 관계를 통해 특정 코드를 주입 받아서 쓸 수 있지만 문제가 있다. 바로 다형성을 활용하지 못하는 것
- 데코레이터 패턴의 핵심
- 알맹이와 껍데기를 동일시한다. 즉 껍데기가 알맹이 행세할 수 있게 해준다
- 동일시 취급하면서도 부가적으로 기능을 추가할 수 있게 해줌
- '상속'과 '포함'을 동시에 처리