Dart/OOP

Dart 문법 OOP - 믹스인

codeJunH 2024. 8. 21. 13:35

믹스인이란?

믹스인(mixin)은 특정 클래스에 원하는 기능들만 골라 넣을 수 있는 기능이다.

이는 다중 상속의 일부 이점을 제공하면서도, 다중 상속의 복잡성을 피할 수 있게 해준다.

 

 

Dart에서의 믹스인 특징

  1. 선택적 기능 추가: 특정 클래스에 필요한 기능만을 선택적으로 추가할 수 있다.
  2. 다중 적용 가능: 하나의 클래스에 여러 개의 믹스인을 적용할 수 있다.
  3. 상속과의 호환성: 특정 클래스를 상속하는 클래스에서도 믹스인을 사용할 수 있다.
  4. 코드 재사용: 여러 클래스 간에 공통 기능을 쉽게 공유할 수 있다.

 

 

Dart에서의 믹스인 구현

예를 들어, Idol 클래스와 관련된 몇 가지 믹스인을 만들어 보겠다:

여기서 주목해야 할 점:

  1. mixin 키워드 사용: Singable과 Danceable은 mixin 키워드를 사용하여 정의된다.
  2. with 키워드로 믹스인 적용: GirlGroup 클래스는 Idol을 상속받고, with 키워드를 사용하여 Singable과 Danceable 믹스인을 적용한다.
  3. 다중 믹스인 적용: 여러 믹스인을 적용할 때는 쉼표(,)로 구분하여 나열한다.

 

 

믹스인 사용 예시

실행 결과:

안녕하세요, 블랙핑크입니다.
노래를 부릅니다.
춤을 춥니다.

이 예시에서 GirlGroup 클래스는 Idol 클래스를 상속받으면서 동시에 Singable과 Danceable 믹스인의 기능을 사용할 수 있다.

 

 

상속 vs 인터페이스 vs 믹스인 

  • 상속:
    • 단일 상속만 가능
    • 부모 클래스의 모든 기능을 상속
    • 강한 "is-a" 관계를 표현
  • 인터페이스:
    • 다중 구현 가능
    • 모든 메서드를 반드시 구현해야 함
    • "can-do" 관계를 표현
  • 믹스인:
    • 다중 적용 가능
    • 선택적 기능 추가
    • 코드 재사용을 위한 유연한 메커니즘

 

 

믹스인 사용의 이점

  1. 코드 재사용: 여러 클래스에서 동일한 기능을 쉽게 재사용할 수 있다.
  2. 유연성: 필요한 기능만을 선택적으로 추가할 수 있다.
  3. 다중 상속의 대안: 다중 상속의 복잡성 없이 여러 소스에서 기능을 가져올 수 있다.
  4. 조합 가능성: 여러 믹스인을 조합하여 복잡한 동작을 구성할 수 있다.

 

 

주의사항

  1. 충돌 관리: 여러 믹스인에서 동일한 이름의 메서드가 존재할 경우, 마지막에 적용된 믹스인의 메서드가 우선된다.
  2. 적절한 사용: 과도한 믹스인 사용은 코드를 복잡하게 만들 수 있으므로 주의가 필요하다.