1. ホーム
  2. dart

[解決済み] "extends" 対 "implements" 対 "with" (拡張する)。

2022-07-07 01:33:52

質問

の違いを理解したいのですが。 extends , implementswith . それぞれのキーワードはいつ使えばいいのでしょうか?

どのように解決するのですか?

拡張します。

<ブロッククオート

extendsはサブクラスを作成するために使用し、superはスーパークラスを参照するために使用します。

Extends は、典型的な OOP クラスの継承です。もしクラスが a はクラスを継承します。 b クラスで実装されたすべてのプロパティ、変数、関数 b は、クラス a . さらに、関数などをオーバーライドすることができます。

を使用します。 extend を使用します。例えば、クラス カー はクラス . Dartでは、クラスは1つのクラスしか拡張できません。


インプリメントです。

すべてのクラスは暗黙のうちに、そのクラスとそのクラスが実装するインターフェースのすべてのインスタンスメンバを含むインターフェースを定義しています。もし、Bの実装を継承せずにBのAPIをサポートするクラスAを作りたい場合、クラスAはBのインターフェイスを実装する必要があります。

Implements は、他のクラスやインターフェースの実装を独自に作成したい場合に使用します。クラス a がクラスを実装している場合 b . クラスで定義されたすべての関数は b で定義された全ての関数を実装しなければなりません。

他のクラスを実装する場合、そのクラスからコードを継承するわけではありません。継承するのは型だけです。Dart では implements キーワードを複数のクラスまたはインターフェイスで使用することができます。


With (Mixins)です。

ミキシンは、複数のクラス階層でクラスのコードを再利用するための方法です。

With はミキシンをインクルードするために使用されます。ミキシンは異なるタイプの構造体であり、キーワード with .

これらはFlutterで一般的なコードスニペットを含めるために使用されます。よく使われるMixinは SingleTickerProviderStateMixinです。 .