Dart는 생성자를 상속하지 않습니다.
3536 단어 Dart
발생한 문제
슈퍼 클래스에서 생성자를 정의하고 있는데, 그 클래스의 서브 클래스를 인스턴스화하려고 하면, The named parameter 'xxx' isn't defined
라는 에러가 발생한다.
super_class.dartimport 'package:flutter/material.dart';
class SuperClass {
const SuperClass({this.argument});
@protected
final String argument;
}
child_class.dartimport 'super_class.dart';
class ChildClass extends SuperClass {
void method() {
print(argument);
}
}
main.dartimport 'child_class.dart';
final myClass = ChildClass(argument: 'hoge');
원인
Dart 공식 문서 에 의하면, constructor 은 상속되지 않는 것 같다.
아래 발췌.
Constructors aren’t inherited
Subclasses don’t inherit constructors from their superclass. A subclass that declares no constructors has only the default (no argument, no name) constructor.
일본어 번역
생성자는 상속되지 않습니다.
서브 클래스는 그 슈퍼 클래스의 생성자 를 상속하지 않는다. constructor 을 정의하고 있지 않는 서브 클래스는 , 디폴트 (인수 없음, 이름 없음)의 constructor 밖에 가지지 않는다.
그렇습니다.
즉 서브 클래스에서도 생성자를 정의하면 OK.
child_class.dartimport 'super_class.dart';
class ChildClass extends SuperClass {
const ChildClass({String argument}) : super(argument: argument);
void method() {
print(argument);
}
}
흠. 서브 클래스에서 하나 하나 정의하는 것이 귀찮지 않습니까?
Reference
이 문제에 관하여(Dart는 생성자를 상속하지 않습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tomokon/items/7b6eebaed1d43c23801e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import 'package:flutter/material.dart';
class SuperClass {
const SuperClass({this.argument});
@protected
final String argument;
}
import 'super_class.dart';
class ChildClass extends SuperClass {
void method() {
print(argument);
}
}
import 'child_class.dart';
final myClass = ChildClass(argument: 'hoge');
Dart 공식 문서 에 의하면, constructor 은 상속되지 않는 것 같다.
아래 발췌.
Constructors aren’t inherited
Subclasses don’t inherit constructors from their superclass. A subclass that declares no constructors has only the default (no argument, no name) constructor.
일본어 번역
생성자는 상속되지 않습니다.
서브 클래스는 그 슈퍼 클래스의 생성자 를 상속하지 않는다. constructor 을 정의하고 있지 않는 서브 클래스는 , 디폴트 (인수 없음, 이름 없음)의 constructor 밖에 가지지 않는다.
그렇습니다.
즉 서브 클래스에서도 생성자를 정의하면 OK.
child_class.dart
import 'super_class.dart';
class ChildClass extends SuperClass {
const ChildClass({String argument}) : super(argument: argument);
void method() {
print(argument);
}
}
흠. 서브 클래스에서 하나 하나 정의하는 것이 귀찮지 않습니까?
Reference
이 문제에 관하여(Dart는 생성자를 상속하지 않습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tomokon/items/7b6eebaed1d43c23801e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)