跳到主要内容

overridden_fields

字段重写了从“{0}”继承的字段。

描述

#

当一个类定义了一个字段,该字段重写了超类中的一个字段时,分析器会生成此诊断信息。

使用另一个字段重写字段会导致对象拥有两个不同的字段,但由于字段名称相同,在给定作用域内只能引用其中一个字段。这可能导致混淆,将对其中一个字段的引用误认为是另一个字段的引用。

示例

#

以下代码生成此诊断信息,因为 B 中的字段 f 遮蔽了 A 中的字段 f

dart
class A {
  int f = 1;
}

class B extends A {
  @override
  int f = 2;
}

常见修复方法

#

如果两个字段表示同一属性,则从子类中移除该字段

dart
class A {
  int f = 1;
}

class B extends A {}

如果两个字段应是不同的,则重命名其中一个字段

dart
class A {
  int f = 1;
}

class B extends A {
  int g = 2;
}

如果这两个字段以某种方式相关但不能相同,请寻找不同的方法来实现所需的语义。