withキーワードによるMixin
単一継承を使わずに機能を追加する
「withキーワードによるMixin」はCoddyKit上の無料Dart Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDart Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Dart Academyコースには全4レッスンが含まれています。
単一の親を超えて
Dartのクラスは親を1つしか拡張できませんが、複数の場所から機能を取り入れたいことがあります。mixinを使うと、追加の動作をきれいに組み込めます。🧩
mixinを宣言する
mixinキーワードを使って宣言します。クラスに似ていますが、単独でインスタンス化するのではなく、他のクラスに組み込むことを目的としています。
mixin Swimmer {
void swim() => print('Swimming');
}withキーワード
クラス宣言の後にwithを記述してmixinを適用します。そのクラスは、mixinが定義するすべてのメソッドをすぐに利用できるようになります。
class Fish with Swimmer {}
// Fish().swim() works複数のmixinを組み込む
複数のmixinはコンマで区切ります。クラスには多数のmixinを一度に組み込むことができ、それぞれが独自の動作を追加します。
class Duck with Swimmer, Flyer {}extendsとwithを組み合わせる
mixinは継承と組み合わせて使えます。まずextendsで1つの親を指定し、その後に組み込みたいmixinをwithで指定します。
class Duck extends Bird with Swimmer, Flyer {}mixinは状態を保持する
mixinはメソッドだけでなくフィールドも保持できます。それを組み込んだクラスは、その状態も自身の一部として持つことになります。
mixin Counter {
int count = 0;
void tick() => count++;
}インスタンス化はできない
純粋なmixinに対してnewを記述することはできません。mixinは実際のクラスに組み込むためだけに存在するため、Dartは直接の構築を禁止します。
異なる継承ツリーで再利用する
スーパークラスとは異なり、同じmixinを完全に関係のないクラスに追加できます。これにより、無理に同じファミリーへ組み込まずにコードを共有できます。
mixinは型である
mixinを組み込んだクラスは、そのmixinの型としても扱われます。FishをSwimmer型の変数に格納して、共有メソッドを呼び出すことができます。
Swimmer s = Fish();
s.swim();継承よりコンポジション
mixinでは、小さく焦点の絞られた機能を組み合わせる方法を重視します。深い階層を無理に作るのではなく、再利用可能な部品から動作をコンポーズします。
mixinの役割を絞る
優れたmixinは、ロギングやシリアライズなど、1つの仕事をうまく行います。小さな単一目的のmixinなら、予期しない競合を起こさずに組み合わせられます。
クイックチェック
mixinをクラスに組み込む方法を思い出してみましょう。
まとめ
mixinを宣言し、withキーワードで適用し、複数のmixinを組み合わせ、関係のないクラス間で動作を共有しました。🧩
よくある質問
「withキーワードによるMixin」レッスンは無料ですか?
はい。「withキーワードによるMixin」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Dart Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Dart Academyコースには全4レッスンが含まれています。
「withキーワードによるMixin」で何を学びますか?
単一継承を使わずに機能を追加する ブラウザで直接実行するハンズオンコードでDart Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Dart Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDart Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「withキーワードによるMixin」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDart Academyレッスンでコードを書いて実行できますか?
はい。すべてのDart Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- extendsとメソッドのオーバーライド
- superの呼び出しとコンストラクターチェーン
- withキーワードによるMixin
- on制約とMixinの順序