이 포스팅은 오브젝트(조영호)를 읽으면서 정리한 글입니다

이전 포스팅
오브젝트 (1)
오브젝트 (2)
오브젝트 (3)
상속과 코드 재사용
상속
- 기존 클래스를 확장해 새로운 클래스를 만듬
- is-a 관계
- 기존 클래스의 기능을 물려받는다.
- 부모와의 결합도 ⬆️
- 자식이 부모에 대해 아주 잘! 알아야함
언제 상속을 사용할까?
- 상속 관계가 is-a 관계인가?
- 부모 클래스 타입으로 자식 클래스를 사용해도 무방한가? (행동호환성)
합성
- 클래스 인스턴스 안에 기존의 인스턴스를 추가
- has-a 관계
- 합성 객체들의 인터페이스를 명확하게 정의해야 함
믹스인
객체 생성시 코드 일부를 클래스 내에 섞어 넣는다(컴파일 시점 주입)
스칼라의 트레이트가 이를 활용
다형성
런타임 시점에 결합되는 동적인 문맥을 사용한다.
self
런타임 시점에 자기 자신 / 혹은 자식 인스턴스를 가르킨다.
현재 객체의 동적 타입을 기준으로 호출 대상을 찾는다
추상화된 계층에서 self를 호출할 시 어떤 클래스의 함수인지 탐색한다. 이 때문에 디버깅 난이도가 상승한다.
super
상속 계층을 따라가면서 출력 가능한 객체를 탐색한다.
정적 타입을 기준으로 호출 대상을 찾는다
조부모 - 부모 - 자식 관계에서 자식이 super()를 호출 시 부모엔 없고 조부모에게만 있는 메서드를 호출할 수도 있다.
예상하지 못한 동작🔥 발생 가능
위임
클래스 - 인스턴스 간 차이를 제거
객체가 스스로 처리하지 않고 다른 객체에게 책임을 넘기는 방식
- 상속에서도 암묵적 위임이 일어남
- 자바스크립트의 prototype 기반 객체 모델도 메시지 위임 체계
일반화 / 특수화 관계
- 부모 클래스: 자식 클래스를 일반화
- 자식 클래스: 부모 클래스를 특수화
'Book > DEV' 카테고리의 다른 글
오브젝트 (3) (0) | 2025.04.09 |
---|---|
오브젝트 (2) (0) | 2025.04.08 |
오브젝트 (1) (1) | 2025.04.01 |
만들면서 배우는 클린 아키텍쳐 (2) (0) | 2025.03.14 |
만들면서 배우는 클린 아키텍쳐 (1) | 2024.12.11 |