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

overridden_fields

フィールドは「{0}」から継承したフィールドをオーバーライドしています。

説明

#

この診断は、クラスがスーパークラスのフィールドをオーバーライドするフィールドを定義した場合にアナライザーによって生成されます。

フィールドで別のフィールドをオーバーライドすると、オブジェクトは2つの異なるフィールドを持つことになりますが、フィールドの名前が同じであるため、特定のスコープではどちらか一方のフィールドしか参照できません。これにより、一方のフィールドへの参照がもう一方のフィールドへの参照と間違われる可能性があります。

#

次のコードは、「A」のフィールド「f」を「B」のフィールド「f」がシャドウしているため、この診断を生成します。

dart
class A {
  int f = 1;
}

class B extends A {
  @override
  int f = 2;
}

一般的な修正

#

2つのフィールドが同じプロパティを表している場合は、サブクラスからフィールドを削除してください。

dart
class A {
  int f = 1;
}

class B extends A {}

2つのフィールドが異なるべき場合は、いずれかのフィールドの名前を変更してください。

dart
class A {
  int f = 1;
}

class B extends A {
  int g = 2;
}

2つのフィールドがある程度関連しているが、同じであってはならない場合は、必要なセマンティクスを実装するための別の方法を見つけてください。