124

Dartでスーパーコンストラクターを呼び出すにはどうすればよいですか? 名前付きスーパーコンストラクターを呼び出すことは可能ですか?

4

6 に答える 6

180

はい、そうです。構文はC#に近いです。デフォルト コンストラクターと名前付きコンストラクターの両方を使用した例を次に示します。

class Foo {
  Foo(int a, int b) {
    //Code of constructor
  }

  Foo.named(int c, int d) {
    //Code of named constructor
  }
}

class Bar extends Foo {
  Bar(int a, int b) : super(a, b);
}

class Baz extends Foo {
  Baz(int c, int d) : super.named(c, d);  
}

サブクラスでインスタンス変数を初期化する場合、super()呼び出しは初期化子リストの最後にある必要があります。

class CBar extends Foo {
  int c;

  CBar(int a, int b, int cParam) :
    c = cParam,
    super(a, b);
}

/r/dartlangで、このsuper()コール ガイドラインの背後にある動機について読むことができます。

于 2012-11-07T14:46:26.860 に答える
4

Dart はクラスをインターフェイス ( Implicit interfaces ) として実装することをサポートしているため、実装した場合、 extendsを使用する必要がある親コンストラクターを呼び出すことはできません。実装を使用する場合は、それをextendsに変更し、Eduardo Copat の Solution を使用します。

于 2018-04-09T09:51:34.697 に答える