OOP checklist

러스트는 객체 지향의 일부를 다른 문법으로 만족한다

데이터와 동작, 캡슐화, 다형성은 강하게 지원하지만 클래스 상속은 트레이트 중심으로 우회한다.

지원

데이터와 동작 결합

구조체와 열거형은 데이터를 담고, `impl` 블록은 같은 타입의 메서드를 제공한다.

struct + impl
지원

캡슐화

필드는 기본 비공개이고 `pub`으로 공개 표면만 열어 내부 불변식을 지킨다.

pub API + private fields
대체

상속

부모 클래스 상속 대신 기본 트레이트 메서드와 트레이트 객체로 코드 공유와 다형성을 나눈다.

trait + dyn Trait