안녕하세요 아이티 석사 Ho입니다. 오늘은 flutter 면접 질문 #2 시간입니다.

flutter의 특징중 다중 상속이 가능 부분이 있는데 mixin이라는 기능입니다.



Flutter에서 mixin은 Dart 언어의 기능으로, 여러 클래스 계층에서 코드를 재사용하기 위한 방법을 제공합니다. mixin은 클래스의 일부 기능을 정의할 수 있으며, 이 기능들은 하나 이상의 다른 클래스에서 사용될 수 있습니다. 이는 다중 상속의 일부 장점을 제공하지만, 다중 상속의 복잡성과 몇 가지 문제점을 피할 수 있도록 도와줍니다.


Mixin 사용 방법

mixin 키워드를 사용하여 mixin을 정의합니다.

with 키워드를 사용하여 클래스에 mixin을 적용합니다.



예시 코드

다음은 Flutter에서 mixin을 사용하는 간단한 예시입니다. 이 예시에서는 두 개의 mixin Walker와 Swimmer를 정의하고, 이를 Animal 클래스에 적용하여 Duck 클래스에서 사용합니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
mixin Walker {
  void walk() {
    print("Walking");
  }
}
 
mixin Swimmer {
  void swim() {
    print("Swimming");
  }
}
 
class Animal {
  // 기본 Animal 클래스 정의
}
 
class Duck extends Animal with Walker, Swimmer {
  // Duck은 Walker와 Swimmer 기능을 모두 가짐
  void quack() {
    print("Quack");
  }
}
 
void main() {
  final duck = Duck();
  duck.walk();  // Walker mixin에서 제공
  duck.swim();  // Swimmer mixin에서 제공
  duck.quack(); // Duck 클래스에서 직접 정의
}
cs
이 코드는 Duck 클래스가 Walker와 Swimmer의 기능을 모두 사용할 수 있게 해줍니다. Duck 인스턴스를 만들고 walk(), swim(), 그리고 quack() 메서드를 호출할 수 있습니다. 이 예시에서는 Duck 클래스가 Animal 클래스를 확장하고 있지만, 동시에 Walker와 Swimmer mixin의 기능을 with 키워드를 사용하여 포함하고 있습니다.

Mixin의 장점
코드 재사용성: 공통 기능을 mixin에 정의하여 여러 클래스에서 재사용할 수 있습니다.
유연성: 필요에 따라 여러 mixin을 조합하여 사용할 수 있으며, 클래스 계층을 변경하지 않고도 기능을 추가할 수 있습니다.
명확성: with 키워드를 사용함으로써 클래스가 어떤 mixin을 사용하고 있는지 명확히 알 수 있습니다.
Mixin은 Flutter 개발에서 유용하게 사용될 수 있으며, 특히 다양한 위젯이나 클래스에 공통적으로 적용되어야 하는 기능을 구현할 때 매우 효과적입니다.