跳到主要內容

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;
}

如果這兩個欄位以某種方式相關但不能相同,請尋找不同的方法來實現所需的語義。