为什么@override注释是可选的?

Ete*_*ode 5 dart

我理解@override注释的定义.

但是,为什么注释的使用是可选的?

Gün*_*uer 6

您可以启用 linter 规则来强制执行它

.analysis_options除了pubspec.yaml具有此内容的文件之外,还向您的项目添加一个文件

linter:
  rules:
    - annotate_overrides
Run Code Online (Sandbox Code Playgroud)


Aba*_*666 5

文档中

@override表示法的目的是捕获超类重命名成员,而用于覆盖该成员的独立子类可以使用超类实现静默继续工作的情况。

您可能想将您的方法命名为与超类相等,而无需显式覆盖它。这是允许的,因为它不会破坏任何约束。基本上,您可以根据需要命名方法。

@Override 仅强制要求,您的父母之一必须具有相同签名的方法。


lrn*_*lrn 5

注释不是语言的一部分,因为语言设计者不想强制使用它.

它已被添加为需要该功能的人的可选注释,但它只能被分析器工具识别,它实际上并不是语言的一部分.

  • 之所以将其设为可选内容,是因为他们不希望它成为语言的一部分。Dart不需要您编写任何东西来重写方法。因此,实际上,它不是*可选*,从语言的角度来看*根本不存在*。即使该语言没有该功能,也有人愿意使用,并添加了@override注释和分析器支持。注释实际上应该与其他分析器可以识别的注释一起放在“ package:meta”中,而不是放在平台库中,也许我们最终会将其移到那里。 (2认同)