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;
}如果這兩個欄位以某種方式相關但不能相同,請尋找不同的方法來實現所需的語義。