invalid_override
'{1}.{0}' ('{2}') 不是 '{3}.{0}' ('{4}') 的有效覆蓋。
setter '{1}.{0}' ('{2}') 不是 '{3}.{0}' ('{4}') 的有效覆蓋。
描述
#當類中的成員覆蓋了其超型別中的成員,且該覆蓋無效時,分析器會產生此診斷。當滿足以下所有條件時,覆蓋有效:
- 它允許被覆蓋成員所允許的所有引數。
- 它不需要被覆蓋成員未要求的任何引數。
- 被覆蓋成員的每個引數型別可賦值給覆蓋成員對應的引數。
- 覆蓋成員的返回型別可賦值給被覆蓋成員的返回型別。
示例
#以下程式碼會產生此診斷,因為引數 s (String) 的型別不可賦值給引數 i (int) 的型別
dart
class A {
void m(int i) {}
}
class B extends A {
void m(String s) {}
}常見修復方法
#如果該無效方法意圖覆蓋超類中的方法,則修改使其符合要求
dart
class A {
void m(int i) {}
}
class B extends A {
void m(int i) {}
}如果它並非意圖覆蓋超類中的方法,則重新命名它
dart
class A {
void m(int i) {}
}
class B extends A {
void m2(String s) {}
}