inconsistent_inheritance 진단: 상속된 시그니처가 일치하지 않을 때

inconsistent_inheritance 진단: 상속된 시그니처가 일치하지 않을 때

Dart 분석기가 만들어 내는 inconsistent_inheritance 진단에 대한 설명이에요.

출처: inconsistent_inheritance

본문

한 멤버에 대해 서로 충돌하는 시그니처를 둘 이상 상속했는데, 그 모든 시그니처를 만족하는 구현을 제공하지 않을 때 이 진단이 발생해요.

설명

클래스가 어떤 멤버에 대해 서로 충돌하는 시그니처를 둘 이상 상속하고, 상속받은 모든 시그니처를 만족하는 구현을 직접 제공하지 않을 때 분석기는 이 진단을 만들어요.

예시

다음 코드는 CA로부터 m의 정의를 물려받는데, 그 구현이 B로부터 상속받은 m의 시그니처와 일치하지 않기 때문에 이 진단을 만들어요.

class A {
  void m({int? a}) {}
}

class B {
  void m({int? b}) {}
}

class C extends A implements B {}

흔한 해결 방법

상속받은 모든 시그니처를 만족하는 메서드 구현을 직접 추가하면 돼요.

class A {
  void m({int? a}) {}
}

class B {
  void m({int? b}) {}
}

class C extends A implements B {
  void m({int? a, int? b}) {}
}

더 알아보기