implements_super_class 진단: extends와 implements/with에 같은 클래스를 함께 쓸 때

implements_super_class 진단: extends와 implements/with에 같은 클래스를 함께 쓸 때

Dart 분석기가 내보내는 진단에는 이름이 있어요. implements_super_class클래스 선언의 extends 절에 어떤 클래스를 나열하면서, 같은 선언의 implementswith 절에도 그 클래스를 나열할 때 분석기가 알려주는 진단이에요. 한 클래스를 상속(inherit)과 구현(implement)에 동시에 쓰는 건 의미가 없어요.

출처: implements_super_class

본문

설명

분석기는 클래스 선언의 extends 절에 어떤 클래스를 나열하고, 같은 선언의 implements 또는 with 절에도 그 클래스를 나열할 때 이 진단을 만들어요.

예시

다음 코드는 클래스 A가 클래스 Bextends 절과 implements 절에 모두 쓰였기 때문에 이 진단이 나와요.

class A {}

class B extends A implements A {}

다음 코드는 클래스 A가 클래스 Bextends 절과 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 {}

더 알아보기