我正在检查Equatable package“如何使用”示例,它们将值传递给 super 类,而该主题对我来说就像一个盲点,我到处都可以看到它: / p>
import 'package:equatable/equatable.dart';
class Person extends Equatable {
final String name;
// why? what's happening behind the scene here?
Person(this.name) : super([name]);
}
另一个例子
@immutable
abstract class MyEvent extends Equatable {
MyEvent([List configs = const []]) : super(configs);
}
1-为什么我们要这样做?为什么要传递抽象事物的值?一个蓝图?这有什么用?
2-为什么有时开发人员像这样为抽象类传递值?
3-这里幕后发生了什么?
4-这种代码的用例是什么?
非常感谢。
答案 0 :(得分:1)
一个抽象类并不排除Dart中有一些具体成员。
以下面的类为例:
abstract class Foo {
Foo(this.value);
final int value;
@override
String toString() => value.toString();
}
虽然它是抽象的,但它具有属性value
的具体实现,该属性是通过自定义构造函数初始化的。
由于参数是必需的,因此子类必须调用超级构造函数,如下所示:
class Subclass extends Foo {
Subclass(): super(42);
}