在DART中,我有以下代码:

class FirstClass {
  FirstClass(a) {

  }
}

class SecondClass extends FirstClass {

}

这会导致SecondClass出现错误,因为FirstClass没有默认构造函数.

然而,当我试图添加一个.

class FirstClass {
  FirstClass(a) {

  }

  FirstClass() {

  }
}

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

我看起来唯一能让这个工作而不出错的方法就是超类根本不实现任何构造函数.我做错了什么?

推荐答案

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

在您的示例中,您可以使用命名构造函数定义2个构造函数:

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

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

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

Dart相关问答推荐

Dart 包对 git repo 子目录的依赖

'T'、'f'、'E'、'e'、'→' 在 dart/flutter 文档中代表什么?

判断无状态小部件是否在Flatter中处理

找不到正确的提供程序-Flutter

如何使我的对话框可滚动?

iOS 上 Flutter 的代码设计错误

如何 Select 性地传递可选参数?

Dart-对base64字符串进行编码和解码

如何在Dart中测试流

如何在 Dart 中替换字符串中间的空格?

对该常量表达式的求值会抛出一个表达式

Dart 交互/访问数据库

可选参数的默认值

Error: The argument type "String?"can't be assigned to the parameter type"String" because "String?"s nullable and "String"isn't

在 Dart 中将 List 转换为字符串?

Dart 中的抽象基类

使用 Futures 时 .then() 和 .whenCompleted() 方法之间的区别?

GWT 与 Dart - 主要区别是什么? Dart 是 GWT 的潜在替代品吗?

Dart 中的 List.shuffle()?

Dart 有没有办法测量小代码的执行时间