この記事では、implements、extends、with keywordsのユースケースについて説明します。 Dartのキーワードを使用してv/sを拡張するv/sを実装します。
はじめに
Flutterアプリケーションを開発している場合は、implements、extends、withキーワードの多くのユースケースを見ているはずです。 前にダーツで働いたことがない人のために、これらのキーワードの違いは明らかではありません。この記事では、FlutterとDartの理解を広げるために、これらのキーワードについて詳しく説明します。
Implementsは、インターフェイスを介して動作を強制するためのものです
OOPでは、インターフェイスは、パブリックフィールドとメソッドのセットリストを実 しかし、C#やJAVAのような他の伝統的なプログラミング言語とは異なり、Dartは明示的なインターフェイス型を持っていません。 各クラスは、既定では、パブリックフィールドとメソッドで構成される独自のインターフェイスを定義します。 したがって、すべてのクラスはDartのインターフェイスとして機能できます。
インターフェイスを実装するにはimplementsキーワードを使用します。 また、クラスは複数のインターフェイスを実装できます。
上記の例では、クラスDはクラスA、B、Cを実装しているため、これらのクラス
さらに、Dartは明示的なインターフェイスを持たないため、抽象クラスをインターフェイスとして使用します。
abstract class X { doX();} class Y implements X { @override doX() { // TODO: implement doX return null; }}
Extendsは継承を介して動作を共有するためのものです
OOPでは、継承はクラス間の動作の共有を意味します。 私たちは、インターフェイスと機能を共有することはできません。 したがって、クラスを実装するとき、その動作を共有することはできません。
上記の例では、クラスBは動作が共有されていないため、doA()メソッドの独自の実装を提供する必要があることがわかります。これらの2つのクラスで動作を共有する場合は、extendsキーワードを使用する必要があります。上記の例では、Bはaを拡張しているため、Bのオブジェクトから直接doA()メソッドを呼び出すことができます。
複数のインターフェイスの実装とは異なり、Dartは単一の継承のみをサポートします。 したがって、複数のクラスから拡張することはできません。OOPでは、mixinは他のクラスで使用するためのメソッドを含むクラスです。 インターフェイスと継承のアプローチとは異なり、mixinは他のクラスの親クラスである必要はありません。
だから、mixinは使用制限を課したり、タイプ制限を強制したりすることはありません。
通常、mixin内に共通の関数を配置します。 Dartでは、withキーワードを使用してmixinを利用します。
上記の例に示すように、mixinフィールドの実装は、必要に応じて上書きすることができます。 さらに、クラスは複数のmixinを使用できます。
Mixinについての注意事項
クラスをMixinとして使用する
Dartでは、クラスがコンストラクタレスの場合、クラスをmixinとして使用するこ たとえば、以下のコードは有効です。しかし、クラスDがコンストラクタを宣言しているため、以下のものは無効です。
class D { D() { } doD() { print('d'); }}class E with D {}
特定のタイプのMixinの強制
mixinを定義するときにonキーワードを使用することによってのみ、特定のタイプのクラスでmixinを使
mixin Z on D { doZ() { }}class D { doD() { print('d'); }}//Can't do this!class E with Z {}//Can do this!class F extends D with Z {}
結論
この記事では、flutter/Dartアプリケーションを開発する際のimplements、extends、withキーワードのユースケースについて学びました。
はV/sを実装してv/sを
で拡張して使用を要約します。
- は動作を強制するための実装を実装しています。
- は、単一クラスの動作を共有するために拡張されています。
- 複数の再利用可能なタイプのビヘイビアを共有するためのミックスイン。
- Dart言語の機能
- Flutterを学ぶ
詳細については、
- Dart言語の機能
- Flutterを学ぶ
詳細については、