728x90
Mixin은 " Mixins are a way of defining code that can be reused in multiple class hierarchies. (여러 클래스 계층에서 코드 정의한 부분을 재사용하기 위한 방법 중 하나이다.)" 공식문서에 표현되어 있다.
https://dart.dev/language/mixins
Dart 언어에는 extends, implements이 주로 사용되며 extends는 클래스를 상속할 때, implements는 추상화 클래스를 만들 때 사용한다.
상속(extends)할 때에는 클래스의 메소드를 override(재정의)하지 않으나, implements를 한 경우에는 반드시 override(재정의)가 필요하다.
Dart에서는 extends를 통한 다중 상속이 지원되지 않는다. mixin은 다중 상속해야 하는 경우에 주로 사용된다.
mixin class Scanner {
// mixin class 키워드는 Dart 3.0.0 버전 이상부터 사용할 수 있다.
void scanning() => print("scanning...");
}
mixin class Printer {
void printing() => print("printing...");
}
class Machine with Printer, Scanner {}
void main() {
final machine = Machine();
machine.printing();
machine.scanning();
}
/***
* class Scanner {} // mixin 불가능 & 인스턴스 생성 가능
* mixin Scanner {} // mixin 가능 & 인스턴스 생성 불가능
* mixin class Scanner {} // mixin 가능 & 인스턴스 생성 가능
*/
|
728x90
'Flutter 앱 > Dart 언어' 카테고리의 다른 글
[Dart 고급] Dart asMap, entries (0) | 2024.01.16 |
---|---|
Dart fold 함수 (2) | 2023.12.15 |
getter & setter (0) | 2023.12.09 |
Dart 직렬화(Serialization) 및 역직렬화(Deserialization) (0) | 2023.12.08 |
Dart 3.0 records (0) | 2023.10.19 |