メインコンテンツにスキップ

無効な_オーバーライド

'{1}.{0}' ('{2}') は '{3}.{0}' ('{4}') の有効なオーバーライドではありません。

セッター '{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) {}
}