이번 포스팅은 아래의 실습 코드를 가지고 내용을 작성해본다.
단일 상속
현재 위의 코드에서 Animal과 Dog, Cat은 단일 상속 관계이며, Dart 언어에서 다중 상속은 지원하지 않는다.
때문에 다중 상속이 필요한 경우, 즉 코드 재사용을 원하는 경우에는 Mixin이라는 개념을 통해 다중 상속을 구현하도록 한다.
Mixin
상속의 경우 extends라는 키워드를 사용하고, Mixin의 경우 with이라는 키워드를 사용한다.
위의 fish와 duck 클래스를 보자.
fish는 swimmer를 Mixin 하였다.
duck은 Animal Class를 단일 상속받으며 swimmer를 Mixin 하였다.
나는 여기까지 실습해보면서, 그럼 도대체 단일 상속하고 Mixin의 차이점이 뭐지? 라는 생각이 들었다.
Mixin은 methods 뿐만 아니라 properties도 추가할 수 있기 때문에, 단일 상속과 다른 점을 찾아보고 싶었다.
둘의 큰 차이점은 존재했고 그것은 바로 계층 구조였다.
Mixin은 독립적인 계층으로써 존재하고, 부모 혹은 자식 관계를 형성할 수 없다.
즉, 하나의 계층을 옆으로 늘려주는 역할만 하는 것이지 위 아래로 계층을 넓힐 수 없는 것이다.
때문에 유연한 다중 상속 관계를 만든다는게 어떤 의미인지 알게 되었다.
'Flutter > Basic Knowledge' 카테고리의 다른 글
[Dart] Stream 이란? (2) | 2024.01.22 |
---|---|
[Dart] Asynchronous & Future (0) | 2024.01.12 |
[Dart] AOT(Ahead-Of-Time) 과 JIT(Just-In-Time) 컴파일러 (0) | 2024.01.10 |
[Dart] Garbage Collection 이란? (1) | 2024.01.10 |
[Dart] Dart 란? (0) | 2024.01.10 |