invalid_visible_for_overriding_annotation — 오버라이딩 불가한 선언에 붙은 visibleForOverriding

invalid_visible_for_overriding_annotation — 오버라이딩 불가한 선언에 붙은 visibleForOverriding

visibleForOverriding 어노테이션이 public instance 멤버가 아닌 다른 것에 적용될 때 나타나는 진단이에요. 이 어노테이션을 정확히 어떤 선언에 붙일 수 있는지 살펴볼게요.

출처: invalid_visible_for_overriding_annotation

본문

분석기는 클래스의 public instance 멤버가 아닌 것에 visibleForOverriding 어노테이션이 붙으면 이 진단을 내보내요.

오버라이딩은 정의된 라이브러리 밖에서 이뤄질 수 있는데, 라이브러리 밖에서 오버라이딩할 수 있는 건 public instance 멤버뿐이에요. 그래서 다른 선언(클래스, private 멤버, static 멤버 등)에 이 어노테이션을 붙여봐야 아무 의미가 없어요.

예시

아래 코드가 이 진단을 만들어내요. 어노테이션이 클래스에 붙었는데, 클래스는 오버라이딩될 수 없기 때문이에요.

import 'package:meta/meta.dart';

@visibleForOverriding
class C {}

흔한 해결 방법

어노테이션을 제거하면 돼요.

class C {}

더 알아보기

  • visibleForOverriding 어노테이션의 정의와 사용법은 package:meta 문서를 참고하세요.
  • 어떤 멤버가 오버라이딩될 수 있는지(public instance 멤버)에 대한 기본은 Dart 언어 투어 — 클래스와 메서드 문서에서 함께 확인해 보세요.