implements_super_class 진단: extends와 implements/with에 같은 클래스를 함께 쓸 때
implements_super_class 진단: extends와 implements/with에 같은 클래스를 함께 쓸 때
Dart 분석기가 내보내는 진단에는 이름이 있어요. implements_super_class는 클래스 선언의 extends 절에 어떤 클래스를 나열하면서, 같은 선언의 implements나 with 절에도 그 클래스를 나열할 때 분석기가 알려주는 진단이에요. 한 클래스를 상속(inherit)과 구현(implement)에 동시에 쓰는 건 의미가 없어요.
본문
설명
분석기는 클래스 선언의 extends 절에 어떤 클래스를 나열하고, 같은 선언의 implements 또는 with 절에도 그 클래스를 나열할 때 이 진단을 만들어요.
예시
다음 코드는 클래스 A가 클래스 B의 extends 절과 implements 절에 모두 쓰였기 때문에 이 진단이 나와요.
class A {}
class B extends A implements A {}
다음 코드는 클래스 A가 클래스 B의 extends 절과 with 절에 모두 쓰였기 때문에 이 진단이 나와요.
mixin class A {}
class B extends A with A {}
흔한 해결 방법
클래스에서 구현(implementation)을 상속받고 싶다면, implements 절에서 그 클래스를 제거해요.
class A {}
class B extends A {}
클래스에서 구현을 상속받고 싶지 않다면, extends 절을 제거해요.
class A {}
class B implements A {}