코드 공유
공통 동작은 트레이트 기본 구현으로 제공하고 타입별로 필요하면 오버라이드한다.
부모 클래스를 물려받는 방식보다 기본 트레이트 구현, 제네릭, 트레이트 객체를 목적별로 선택한다.
공통 동작은 트레이트 기본 구현으로 제공하고 타입별로 필요하면 오버라이드한다.
컴파일 시점에 타입을 정하면서 trait bound로 필요한 능력을 제한한다.
런타임에 여러 구현체를 같은 인터페이스로 다루고 싶을 때 사용한다.
상속 계층보다 필요한 능력 단위로 조합해 결합도를 낮춘다.
러스트에서 OOP를 해석할 때 핵심은 “부모 타입”이 아니라 타입이 제공해야 하는 행동 계약을 먼저 잡는 것이다.