見出し画像

[Flutter]mixinを使ったサンプルコード


mixinとは

mixinは、あるクラスで定義されたメソッドやプロパティを、別のクラスでも再利用できるようにする仕組みです。
例えば、あるクラスが「泳ぐ」という機能を持っているとします。
mixinを使うと、他のクラスでも同じ「泳ぐ」機能を使えるようになります。

mixinを使ったシンプルなコード

下記のコードは、ミキシン(mixin)とクラスを使って、魚が泳ぐことができるというシンプルな例です。

mixin Swimmer {
  String swim() {
    return '泳ぐ';
  }
}

class Fish with Swimmer {
  
}

void main(){
  var fish = Fish();
  print('魚は${fish.swim()}ことができます。');
}

主要な部分を説明します。

  1. mixin Swimmer:

    • Swimmerという名前のミキシンを定義しています。ミキシンは、クラスに再利用可能なコードを追加するための仕組みです。

    • Swimmerミキシン内には、String swim()というメソッドが定義されています。このメソッドは文字列 '泳ぐ' を返します。つまり、魚が泳ぐことを表現するためのメソッドです。

  2. class Fish with Swimmer:

    • Fish クラスは、Swimmer ミキシンを with キーワードを使用して結合(ミックスイン)しています。これにより、Fish クラスは Swimmer ミキシン内のコード(swim()メソッド)を継承します。つまり、魚は swim() メソッドを持つことができ、そのメソッドを呼び出すことができます。

  3. void main():

    • main() 関数内では、Fish クラスから fish インスタンスを作成しています。

    • fish.swim() を呼び出して、魚が泳ぐことを示しています。このメソッド呼び出しの結果を文字列内で使用して、「魚は泳ぐことができます。」というメッセージを出力しています。

したがって、このコードは、Swimmer ミキシンを使用して魚が泳ぐことを表現し、main() 関数内でそれを実際に呼び出して、メッセージを表示しています。

2つのmixinを継承してみる

下記のコードは、ミキシン(mixin)とクラスを使って、アヒルが泳ぐことも歩くこともできるというシンプルな例です。
ポイントは、1つのクラスに2つのmixinを適用できることです。

mixin Swimmer {
  String swim() {
    return '泳ぐ';
  }
}

mixin Walker {
  String walk(){
    return '歩く';
  }
}

class Duck with Swimmer, Walker {
  
}

void main(){  
  var duck = Duck();
  print('アヒルは${duck.swim()}ことも${duck.walk()}こともできます。');
}

このコードは、Swimmer ミキシンと Walker ミキシンを使用して、アヒルが泳ぐことと歩くことの両方を表現しています。

この記事が気に入ったらサポートをしてみませんか?