跳到主要內容

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) {}
}