[Dart] Mixins
2021. 1. 25. 08:35ㆍFlutter
[Dart] Mixins
이런 문법은 처음본다.... 그래서 정리를 해보려고한다.
우선 Mixins람 무었일까?
클래스를 상속하지 않고 상속한 것 처럼 메소드를 사용할 수 있는 클래스이다.
이런 문구를 언제사용할 수 있을까? 최근 oop에서는 다중상속을 많이 지원하지 않는다. 이는 죽음의 다이아몬드라는 문제 때문인데 다트 또한 다중 상속을 지원하지 않는다.
class Animal{ void move(){ print('move Postion'); } } class Fish extends Animal{ @override void move(){ super.move(); print('by Swim'); } } class Bird extends Animal{ @override void move(){ super.move(); print('by Flying'); } }
만약 상속을 통해 위와 같이 코드를 구성했는데 오리의 경우 육해공 모두 되어서 다중상속을 통해서 코드를 표현할 수 없다. 따라서 이럴 때 mixin을 통해 편리하게 다중상속과 같은 효과를 지원하고 있다.
class Animal{ void move(){ print('move Postion'); } } mixin canSwim{ void swim(){ print('move Postion by Swim'); } } mixin canFly{ void fly(){ print('move Postion by Fly'); } } mixin canRun{ void run(){ print('move Postion by Run'); } } class Duck extends Animal with canFly, canRun, canSwim{ @override void move(){ swim(); fly(); run(); } } void main(){ Duck().move(); }
위를 보면 간단하게 사용법을 알 수 있다. 일반적으로는 with이라는 키워드와 함께 사용하며 함수를 호출하여 사용할 수 있다.
'Flutter' 카테고리의 다른 글
Flutter Firebase 회원가입 및 로그인 하기 (0) | 2021.01.26 |
---|---|
Flutter Firebase 연동하기(ios, android) (0) | 2021.01.26 |
[flash chat] animation (0) | 2021.01.25 |
[flash chat] static 구문 (0) | 2021.01.25 |
[Dart] 비동기 프로그래밍 (0) | 2021.01.21 |