[Dart] Mixins

2021. 1. 25. 08:35Flutter

[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