추상 클래스는 인스턴스화할 수 없음

추상 클래스는 인스턴스화할 수 없음 (instantiate_abstract_class)

이 문서는 Dart 분석기(analyzer)가 만들어 내는 instantiate_abstract_class 진단(diagnostic)에 대한 상세한 내용을 설명하는 문서예요. 간단히 말하면, 추상(abstract) 클래스에 선언된 생성자를 호출해서 인스턴스를 만들려고 할 때 분석기가 이 진단을 알려 줘요. 왜 안 되는지와 어떻게 고쳐야 하는지 함께 살펴볼게요.

출처: instantiate_abstract_class

본문

진단 메시지

Abstract classes can't be instantiated.

추상 클래스는 인스턴스화할 수 없어요.

설명

분석기는 생성자 호출을 발견했는데 그 생성자가 추상 클래스에 선언되어 있으면 이 진단을 만들어 내요. 추상 클래스는 인스턴스를 만들 수 없지만, 서브클래스(subclass)가 호출할 수 있는 생성자는 선언할 수 있어요. 문제는 추상 클래스의 생성자를 직접 호출하려 할 때 생겨요.

예시

다음 코드는 C가 추상 클래스인데 C()를 호출해 인스턴스를 만들려고 하기 때문에 이 진단을 만들어 내요.

abstract class C {}

var c = C();

일반적인 해결 방법

추상 클래스의 서브클래스 중 실제로 사용할 수 있는 구체적인(concrete) 클래스가 있다면, 그 구체적인 서브클래스의 인스턴스를 만들면 돼요.

더 알아보기