拥有以下代码片段:

abstract class SuperClass {
  static String id = 'id';

  static String get getId {
    return id;
  }
}

class SubClass extends SuperClass {
  static String name = 'name';
}

void main() {
  print(SubClass.name);
  print(SubClass.id);
}

我如何才能访问id个物业?

print(SubClass.id);导致错误:

"line 3 • The getter 'id' isn't defined for the type 'SubClass'."

SubClass在扩展(未实现)时不应该继承id属性吗?

推荐答案

在DART中,静态方法和属性不被继承.

这在第10.7节(第the Dart language spec节)中有所介绍:

10.7静态方法静态方法 静态方法是函数,而不是getter或setter,其声明- 元素立即包含在类声明中,并且声明了 静电.类C的静态方法是由C声明的那些静态方法.

静态方法的继承在DART中用处不大.静态方法不能 被覆盖.任何需要的静态函数都可以从它的声明中获得 库,并且不需要通过继承将其纳入作用域.经验 说明开发人员对继承方法的概念感到困惑,而不是 实例方法.

当然,静态方法的整个概念是有争议的,但它是被保留的 在这里,因为很多程序员都熟悉它.DART静态方法 可以被视为包围库的函数.

静态方法声明可能与其他声明冲突(10.10).

其他参考文献

Dart相关问答推荐

Dart 3.3接口字段类型升级不起作用

为什么 Dart 程序在使用词法作用域时会根据声明变量的位置而表现不同?

切换到可靠的零安全后简单分配中的可空性不匹配

Dart 中的静态构造函数

在构建函数之外使用 BuildContext

Flutter 使用拖动和按钮单击扩展 TextField

Flutter:Firebase FieldValue.serverTimestamp() 到 DateTime 对象

将 Flutter 前端与 Android 和 iOS 的 .NET Core 后端相结合

Stack inside Stack in flutter

表单的 TextFormField 中的多个光标(cursor)

iOS 上 Flutter 的代码设计错误

设置Dart中非常量的默认值

如何为 macos 桌面应用启用 Flutter 上网权限?

使用 dart 下载文件

GestureDetector onTap 卡

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

Dart:打印整数和字符串

Dart - 将自纪元以来的毫秒数(UNIX 时间戳)转换为人类可读的时间

方法级联如何在 dart 中准确工作?

如何在 Dart 中合并两个列表?