상속된 필드 재정의
상속된 필드 재정의 (overridden_fields)
Dart 애널라이저가 내는 overridden_fields 진단에 대해 설명해 드릴게요.
본문
필드가 {0}에서 상속받은 필드를 재정의하고 있어요. (린트 규칙)
설명
애널라이저는 클래스가 슈퍼클래스의 필드를 재정의하는 필드를 정의할 때 이 진단을 생성해요.
필드를 다른 필드로 재정의하면 객체에 서로 다른 두 개의 필드가 생기게 돼요. 그런데 필드 이름이 같기 때문에 주어진 스코프 안에서는 두 필드 중 하나만 참조할 수 있어요. 그래서 한 필드를 가리키는 참조가 다른 필드를 가리키는 것으로 오해될 수 있어서 혼란스러워질 수 있답니다.
예시
아래 코드는 B의 필드 f가 A의 필드 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 언어 문서를 참고해요.