상속된 필드 재정의

상속된 필드 재정의 (overridden_fields)

Dart 애널라이저가 내는 overridden_fields 진단에 대해 설명해 드릴게요.

출처: overridden_fields

본문

필드가 {0}에서 상속받은 필드를 재정의하고 있어요. (린트 규칙)

설명

애널라이저는 클래스가 슈퍼클래스의 필드를 재정의하는 필드를 정의할 때 이 진단을 생성해요.

필드를 다른 필드로 재정의하면 객체에 서로 다른 두 개의 필드가 생기게 돼요. 그런데 필드 이름이 같기 때문에 주어진 스코프 안에서는 두 필드 중 하나만 참조할 수 있어요. 그래서 한 필드를 가리키는 참조가 다른 필드를 가리키는 것으로 오해될 수 있어서 혼란스러워질 수 있답니다.

예시

아래 코드는 B의 필드 fA의 필드 f를 가리고 있어서 이 진단을 만들어요.

class A {
  int f = 1;
}

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

일반적인 수정 방법

두 필드가 같은 속성을 나타내는 거라면, 서브클래스에서 필드를 제거해요.

class A {
  int f = 1;
}

class B extends A {}

두 필드가 서로 달라야 한다면, 둘 중 하나의 필드 이름을 바꿔요.

class A {
  int f = 1;
}

class B extends A {
  int g = 2;
}

두 필드가 어떤 식으로든 연관되어 있지만 같을 수는 없다면, 필요한 의미를 구현할 수 있는 다른 방법을 찾아보세요.

더 알아보기

Dart의 상속과 @override 애너테이션에 대한 더 자세한 내용은 Dart 언어 문서를 참고해요.