재정의 대상이 없는 멤버의 @override
재정의 대상이 없는 멤버의 @override (override_on_non_overriding_member)
Dart 애널라이저가 내는 override_on_non_overriding_member 진단에 대해 설명해 드릴게요.
본문
이 필드는 상속받은 getter나 setter를 재정의하지 않아요.
이 getter는 상속받은 getter를 재정의하지 않아요.
이 메서드는 상속받은 메서드를 재정의하지 않아요.
이 setter는 상속받은 setter를 재정의하지 않아요.
설명
애널라이저는 클래스 멤버에 @override 애너테이션이 붙어 있는데, 그 멤버가 해당 클래스의 슈퍼타입 어디에도 선언되어 있지 않을 때 이 진단을 생성해요.
예시
아래 코드는 m이 C의 슈퍼타입 어디에도 선언되어 있지 않아서 이 진단을 만들어요.
class C {
@override
String m() => '';
}
일반적인 수정 방법
이 멤버가 다른 이름을 가진 멤버를 재정의하려는 거라면, 멤버의 이름을 그에 맞게 바꿔주세요.
class C {
@override
String toString() => '';
}
이 멤버가 슈퍼클래스에서 제거된 멤버를 재정의하려는 거라면, 서브클래스에서 그 멤버를 제거하는 걸 고려해봐요.
멤버를 제거할 수 없다면, 애너테이션을 제거해주세요.
더 알아보기
Dart의 상속과 @override 애너테이션에 대한 더 자세한 내용은 Dart 언어 문서를 참고해요.