错误:已定义默认构造函数

时间:2013-12-15 18:36:52

标签: inheritance constructor dart

在Dart中,我有以下代码:

class FirstClass {
  FirstClass(a) {

  }
}

class SecondClass extends FirstClass {

}

这导致SecondClass错误,因为FirstClass没有默认构造函数。

但是当我尝试添加一个时。

class FirstClass {
  FirstClass(a) {

  }

  FirstClass() {

  }
}

它出错,因为默认构造函数已在FirstClass中定义。

我似乎唯一可以使这项工作而不是错误的方法是,如果超类根本没有实现任何构造函数。我做错了什么?

2 个答案:

答案 0 :(得分:11)

在dart中,您不能多次使用相同的方法/构造函数名称(即使使用不同的参数)。

在您的情况下,您可以使用命名构造函数来定义2个构造函数:

class FirstClass {
  FirstClass() {}
  FirstClass.withA(a) {}
}

或将a定义为可选,并且只保留一个构造函数:

class FirstClass {
  FirstClass([a]) {}
}

答案 1 :(得分:0)

在dart中,您不能像Java这样的其他语言拥有多个构造函数。

您可以将默认构造函数定义为

class FirstClass {
  FirstClass() {}
}

OR

class FirstClass {
  String name;
  int age;
  FirstClass(name, age) {
    this.name = name;
    this.age = age;
  }
}

您不能在其中包含默认值以及参数构造函数。