
믹스인은 클래스는 아니다.
일종의 기능을 주입하여 코드를 재사용하고 확장하는 방법 중 하나다.
'혼합(mix)'하는 방식으로 동작한다.
즉!! 믹스인 덕분에 여러개 부모를 가질 수 있게 되는거다.
ㅎㅎ.. 일단 예시를 보자
예시)
Animal이란 클래스와, Animal 클래스를 상속받은 Bird라는 클래스를 만들었다.
class Animal {
String name;
Animal(this.name);
}
class Bird extends Animal {
Bird(String name): super(name);
}
void main () {
Bird('Bird');
}
그런데 Animal에 현재 없는 함수 기능을 Bird에서 쓰게 하고 싶다면, 이때 믹스인을 쓰면된다.
mixin Flyable on Animal {
void fly() {
print('I am flying!');
}
}
class Animal {
String name;
Animal(this.name);
}
class Bird extends Animal **with Flyable**{
Bird(String name): super(name);
}
// with Flyable을 넣어 Flyable이라는 믹싱에서 제공하는 fly() 메소드를 사용할 수 있게 함.
void main () {
var bird = Bird('Bird');
bird.fly();
}
이렇게 하면 bird는 fly()라는 메소드를 쓸 수 있게 된다.
즉, Animal을 상속받은 Brid는 fly라는 기능이 없는데, flyable을 다중 상속 받는 것처럼 fly메소드도 가져올 수 있게 되는 것이다.
믹싱을 실제로 현업에서 많이 사용할까? 그것이 궁금하다. 현업에선 어떨 때 많이 쓰는지 아는 분 알려줘요~