추상 클래스는 인스턴스화할 수 없음
추상 클래스는 인스턴스화할 수 없음 (instantiate_abstract_class)
이 문서는 Dart 분석기(analyzer)가 만들어 내는 instantiate_abstract_class 진단(diagnostic)에 대한 상세한 내용을 설명하는 문서예요. 간단히 말하면, 추상(abstract) 클래스에 선언된 생성자를 호출해서 인스턴스를 만들려고 할 때 분석기가 이 진단을 알려 줘요. 왜 안 되는지와 어떻게 고쳐야 하는지 함께 살펴볼게요.
본문
진단 메시지
Abstract classes can't be instantiated.
추상 클래스는 인스턴스화할 수 없어요.
설명
분석기는 생성자 호출을 발견했는데 그 생성자가 추상 클래스에 선언되어 있으면 이 진단을 만들어 내요. 추상 클래스는 인스턴스를 만들 수 없지만, 서브클래스(subclass)가 호출할 수 있는 생성자는 선언할 수 있어요. 문제는 추상 클래스의 생성자를 직접 호출하려 할 때 생겨요.
예시
다음 코드는 C가 추상 클래스인데 C()를 호출해 인스턴스를 만들려고 하기 때문에 이 진단을 만들어 내요.
abstract class C {}
var c = C();
일반적인 해결 방법
추상 클래스의 서브클래스 중 실제로 사용할 수 있는 구체적인(concrete) 클래스가 있다면, 그 구체적인 서브클래스의 인스턴스를 만들면 돼요.
더 알아보기
- Dart 분석기 진단 목록에서 다른 진단들도 함께 살펴보세요.
- 추상 클래스와 상속에 대해 더 알고 싶다면 Classes 문서를 참고해요.