본문 바로가기
Dart/기초

[Dart] mixin 클래스

by 붕어사랑 티스토리 2021. 10. 15.
반응형

Mixin 클래스란?

클래스코드를 다중상속을 통하여 재활용 할 수 있도록 만든 기능이다.

 

 

 

Mixin 생성 및 사용법

  • 재사용될 클래스 코드는 생성자를 정의하면 안된다
  • mixin으로 사용될 클래스의 생성을 원하지 않을경우 mixin 키워드를 사용한다
  • mixin 클래스는 with 키워드로 상속해준다.
class Person{
  int age;
  String name;
  Person(this.age, this.name);
}

class Singer{
  String? song;
}

mixin Dancer{
  String? dance;
}
class Idol extends Person with Singer, Dancer {
  
  Idol(int age,String name,[String? song, String? dance]):super(age, name){
    
    this.song = song??"no song";
    this.dance = dance??"no dance";
    
  }
  playSingAndDance(){
    print(this.song);
    print(this.dance);
  }
}


void main() {
  Idol idol = Idol(20, "K-Idol", "k-pop","k-dance");
  idol.playSingAndDance();
  
  Singer();// 생성가능하나 생성자를 정의하면 mixin으로 사용 불가
  //Dancer();// mixin은 생성 불가능!
}

 

 

on 키워드

 

만약 mixin 클래스를 특정 클래스에만 적용하고 싶다면 on 키워드를 사용한다.

class Musician {
  // ...
}
mixin MusicalPerformer on Musician {
  // ...
}
class SingerDancer extends Musician with MusicalPerformer {
  // ...
}
반응형

댓글