Dart에서 다중상속 문제 해결하기(mixin, with)

HyunHo Shin·2023년 6월 3일
0

Dart & Flutter

목록 보기
1/2

안녕하세요. 이번 글에서는 Dart에서 다중상속 문제를 해결하는 mixinwith에 대해서 공부해 보도록 하겠습니다.

💡 결론 미리보기

  • 다중 상속이 필요할 때 Mixin을 활용할 수 있다.
  • Mixin은 다른 코드에 더해질 목적으로 만들어진 클래스이다.
  • with 키워드는 Mixin을 클래스에 더해줄 때 사용한다.

다중상속 문제란?

OOP의 장점 중 하나는 코드의 재사용 입니다. OOP에서 코드를 재사용할 때는 보통 상속을 사용합니다. 그런데 우리는 종종 여러 클래스의 코드를 혼합해서 사용하고 싶을 때가 있습니다. 이에 대한 직관적인 해결책은 해당 클래스에 여러개의 클래스를 상속 받는 것일 겁니다. 이를 '다중상속'이라 부릅니다.

하지만 Dart언어에서 하나의 클래스는 하나의 부모 클래스만 상속 받을 수 있습니다. 그렇다면 우리는 Dart에서 어떻게 해야 여러 클래스를 혼합할 수 있을까요?

이 문제에 대한 해답은 Mixin을 사용하는 것입니다.

The with keyword

mixin은 클래스 종류 중 하나로, 다른 클래스에 코드를 더하는 용도로 만들어진 클래스입니다.**

간단한 예시로 mixin이 어떻게 사용되나 확인해 보도록 하겠습니다.

mixin A {
  void methodA(){
    print('A');
  }
}

mixin B {
  void methodB(){
    print('B');
  }
}

// class C에 class A, B의 코드를 더하도록 하겠습니다.
class C with A, B {}

void main() {
  C c = C();
  c.methodA(); // Prints: A
  c.methodB(); // Prints: B
}

위 코드에서 우리는 mixin을 정의하여 ‘C’'A''B''with'키워드를 활용하여 더해주었습니다. mixin의 강점 중 하나는 상속에 추가로 코드를 더할 수 있다는 것입니다.

Flutter에서 Mixin 사용 사례

class _MyHomePageState extends State<MyHomePage> with SingleTickerProviderStateMixin {
		// Code...
}

해당 패턴은 Flutter에서 애니메이션을 추가할 때 자주 활용됩니다. Animation기능을 넣을 때 state위젯에 SingleTickerProviderStateMixin을 더해줌으로서 이미 다른 클래스를 상속받은 클래스에 추가로 코드를 더해 줍니다

정리

  • 다중 상속이 필요할 때 Mixin을 활용할 수 있다.
  • Mixin은 다른 코드에 더해질 목적으로 만들어진 클래스이다.
  • with 키워드는 Mixin을 클래스에 더해줄 때 사용한다.
profile
관심사가 다양한 사람

0개의 댓글