Dart 重写抽象类的子类

Dart 重写抽象类的子类,dart,Dart,我创建了一个抽象类: abstract class Foo { void stuff(); } 如果扩展抽象类,是否应该使用@override对其进行注释 class Bar extends Foo { @override // is including this line good practice? void stuff() => print('Stuff done.'); } 我在这里很矛盾: 实际上,我并没有在Foo中定义东西的行为,因此没有覆

我创建了一个抽象类:

abstract class Foo {
    void stuff();
}
如果扩展抽象类,是否应该使用
@override
对其进行注释

class Bar extends Foo {
    @override     // is including this line good practice?
    void stuff() => print('Stuff done.');
}
我在这里很矛盾:

  • 实际上,我并没有在
    Foo
    中定义
    东西的行为,因此没有覆盖任何功能
  • 扩展
    到其他OO语言中时,通常习惯于包括
    @覆盖
    ,即使是在抽象类中以前未定义的方法上

什么是最佳实践?是否存在现有约定?

注释
@override
表示
void stuff()
从超类或接口重写方法

添加
@override
对运行时没有影响,但会影响静态分析

分析器可以产生警告,通知您实际上没有按照预期进行覆盖,或者通过将这些过梁尺添加到
analysis\u选项中意外地进行覆盖。yaml

linter:
  rules:
    - annotate_overrides
    - unnecessary_overrides

您的意思是,在扩展抽象类时,我们是否需要对被重写的方法使用重写注释?对吗@用户都是正确的。是否使用
@override
注释取决于您正在处理的项目的首选项。许多项目确实使用
@override
作为规则,但它不是语言的一部分,也不是Dart样式指南所要求的。如果您确实希望在一般情况下使用
@override
,那么是的,您确实希望在此处使用它。
@override
用于实现接口方法,而不仅仅是覆盖实现,抽象成员成为超类接口的一部分。