inconsistent_inheritance 진단: 상속된 시그니처가 일치하지 않을 때
inconsistent_inheritance 진단: 상속된 시그니처가 일치하지 않을 때
Dart 분석기가 만들어 내는 inconsistent_inheritance 진단에 대한 설명이에요.
본문
한 멤버에 대해 서로 충돌하는 시그니처를 둘 이상 상속했는데, 그 모든 시그니처를 만족하는 구현을 제공하지 않을 때 이 진단이 발생해요.
설명
클래스가 어떤 멤버에 대해 서로 충돌하는 시그니처를 둘 이상 상속하고, 상속받은 모든 시그니처를 만족하는 구현을 직접 제공하지 않을 때 분석기는 이 진단을 만들어요.
예시
다음 코드는 C가 A로부터 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}) {}
}