undefined_super_member 진단: 상위 클래스에 없는 멤버를 super로 참조했을 때

undefined_super_member 진단: 상위 클래스에 없는 멤버를 super로 참조했을 때

분석기가 내보내는 진단에는 이름이 있어요. undefined_super_membersuper를 사용해 상속된 멤버(메서드, getter, setter, 연산자)를 참조했는데, 상위 클래스 체인에 그 이름의 멤버가 없을 때 Dart 분석기가 알려주는 진단이에요. (이전에는 undefined_super_method라고 불렸어요.)

출처: undefined_super_member

본문

설명

분석기는 super를 사용해 상속된 멤버(메서드, getter, setter, 연산자)를 참조했는데, 상위 클래스 체인에 그 이름의 멤버가 없을 때 이 진단을 만들어요.

예시

다음 코드는 Objectn이라는 이름의 메서드가 정의되어 있지 않기 때문에 이 진단을 만들어요.

class C {
  void m() {
    super.n();
  }
}

다음 코드는 Objectg라는 이름의 getter가 정의되어 있지 않기 때문에 이 진단을 만들어요.

class C {
  void m() {
    super.g;
  }
}

흔한 해결 방법

호출하려는 상속 멤버의 이름이 다르다면, 호출하는 멤버의 이름을 상속 멤버와 일치시켜요.

호출하려는 멤버가 같은 클래스에 정의되어 있다면 super.을 제거해요.

멤버가 정의되어 있지 않다면 상위 클래스 중 하나에 멤버를 추가하거나, 호출을 제거해요.

더 알아보기