undefined_super_member 진단: 상위 클래스에 없는 멤버를 super로 참조했을 때
undefined_super_member 진단: 상위 클래스에 없는 멤버를 super로 참조했을 때
분석기가 내보내는 진단에는 이름이 있어요. undefined_super_member는 super를 사용해 상속된 멤버(메서드, getter, setter, 연산자)를 참조했는데, 상위 클래스 체인에 그 이름의 멤버가 없을 때 Dart 분석기가 알려주는 진단이에요. (이전에는 undefined_super_method라고 불렸어요.)
본문
설명
분석기는 super를 사용해 상속된 멤버(메서드, getter, setter, 연산자)를 참조했는데, 상위 클래스 체인에 그 이름의 멤버가 없을 때 이 진단을 만들어요.
예시
다음 코드는 Object에 n이라는 이름의 메서드가 정의되어 있지 않기 때문에 이 진단을 만들어요.
class C {
void m() {
super.n();
}
}
다음 코드는 Object에 g라는 이름의 getter가 정의되어 있지 않기 때문에 이 진단을 만들어요.
class C {
void m() {
super.g;
}
}
흔한 해결 방법
호출하려는 상속 멤버의 이름이 다르다면, 호출하는 멤버의 이름을 상속 멤버와 일치시켜요.
호출하려는 멤버가 같은 클래스에 정의되어 있다면 super.을 제거해요.
멤버가 정의되어 있지 않다면 상위 클래스 중 하나에 멤버를 추가하거나, 호출을 제거해요.