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
用于实现接口方法,而不仅仅是覆盖实现,抽象成员成为超类接口的一部分。