[Dart] 믹스인

2023. 4. 28. 05:08FE/Dart

Mixin

mixin 예약어로 믹스인을 선언한다.

mixin MyMixin{
  int data = 10;
  void func() {
    print("mixin");
  }
}

 

믹스인에는 변수와 함수를 선언할 수 있지만 클래스가 아니라 생성자는 선언할 수 없다.

생성자가 없으니 객체를 생성할 수 없다.

 

믹스인 활용

다트를 비롯하여 대부분의 객체지향 언어에서 다중 상속을 지원하지 않는다.

여러 클래스에서 선언된 멤버를 상속한 것처럼 사용하고 싶을 때 믹스인을 사용한다.

이 때 with 예약어를 사용한다.

mixin MyMixin {
  int data = 10;
  void func() {
    print("mixin");
  }
}

class MyClass with MyMixin {
  void func() {
    print("$data");
  }
}

 

믹스인을 with로 사용하는 클래스 객체는 믹스인 타입으로 사용할 수 있다.

 

믹스인 사용 제약

특정 타입 클래스에서만 믹스인을 사용하도록 제약을 걸 수 있다.

믹스인 선언부에 on 예약어로 해당 타입을 지정하면 된다.

해당 타입을 상속하고 있는 클래스에서만 믹스인을 사용할 수 있다.

mixin MyMixin on MySuper {
}

class MySuper {
}

class MyClass extends MySuper with MyMixin {

}
728x90

'FE > Dart' 카테고리의 다른 글

[Dart] 다트에서 제공하는 연산자  (0) 2023.04.28
[Dart] 다트란 무엇인가  (0) 2023.04.27