Dart:Class modifiers のドキュメントを読む ~ mixin~

2024/04/07に公開

Mixin classの使い方

あるクラス(インスタンス)に、abstract classが持つ抽象メソッドの他に、別のクラスの持つメソッドも使わせたい場合に Mixinが便利。

例えば、Animal classを作成する。
Animal classには、すべての動物が行う行為であるBreathを定義する。

そして、動物の種類によって、行うことができる・できないが別れる行為(吠える、泳ぐ、飛ぶ)など
をmixin classとして定義する。

犬クラスを作成するときには、Animal classを継承させるとともに Bark(吠える) classをmixinすることで、犬クラスでは、 犬クラス内でBreath()とBark()を定義せずに、呼び出すことができる。

abstract class Animal{
  void Breath(){
     print("breath);
  }
} 

mixin Bark{
 void bark() => print("Bark");
}

Mixin classを使いたいときは with をつける。

class Dog extends Animal with Bark{}

main(){
  var dog = new Dog();
  dog.breath();
  dog.bark();
}

参考

https://www.youtube.com/watch?v=VlG-K14YMe0

Discussion