non_abstract_class_inherits_abstract_member

non_abstract_class_inherits_abstract_member

추상 멤버를 상속받은 클래스는 그 멤버의 구체적인 구현을 가져야 해요. 구체 클래스인데 일부 추상 멤버에 구현이 없으면 이 lint가 알려 주는 거예요.

출처: non_abstract_class_inherits_abstract_member

본문

설명

분석기는 구체(concrete) 클래스가 추상 멤버를 하나 이상 상속받았는데, 그 추상 멤버 중 적어도 하나에 대한 구현을 제공하거나 상속받지 못하면 이 진단을 만들어요.

예시

아래 코드는 클래스 Bm의 구체적인 구현을 갖고 있지 않아서 이 진단이 나타나요.

abstract class A {
  void m();
}

class B extends A {}

흔한 해결 방법

하위 클래스가 상속받은 추상 멤버 중 일부나 전부에 대해 구체적인 구현을 제공할 수 있다면, 그 구현을 추가해 주세요.

abstract class A {
  void m();
}

class B extends A {
  @override
  void m() {}
}

상속받은 메서드의 구현을 제공하는 mixin이 있다면, 하위 클래스에 그 mixin을 적용할 수 있어요.

abstract class A {
  void m();
}

class B extends A with M {}

mixin M {
  void m() {}
}

하위 클래스가 상속받은 추상 멤버 전체에 대해 구체적인 구현을 줄 수 없다면, 하위 클래스 자체를 abstract로 표시해요.

abstract class A {
  void m();
}

abstract class B extends A {}

더 알아보기

  • 추상 클래스와 mixin의 동작을 정리한 Dart 문서를 함께 보면 이 lint를 이해하는 데 도움이 돼요.