为什么要给super传值class? subclass 到 super
Why to pass values to the super class? subclass to super
我正在检查 Equatable package "how to use" 示例,它们将值传递给 super class,这个主题就像一个盲点我,我到处都看到它:
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- 为什么有时开发人员会像这样传递抽象 class 的值?
3- 这里的幕后发生了什么?
4- 此类代码的用例是什么?
非常感谢。
一个class是抽象的并不排除它在Dart中有一些具体的成员。
以下class为例:
abstract class Foo {
Foo(this.value);
final int value;
@override
String toString() => value.toString();
}
虽然它是抽象的,但它具有 属性 value
的具体实现,通过自定义构造函数进行初始化。
并且由于参数是必需的,子class 必须像这样调用超级构造函数:
class Subclass extends Foo {
Subclass(): super(42);
}
我正在检查 Equatable package "how to use" 示例,它们将值传递给 super class,这个主题就像一个盲点我,我到处都看到它:
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- 为什么有时开发人员会像这样传递抽象 class 的值?
3- 这里的幕后发生了什么?
4- 此类代码的用例是什么?
非常感谢。
一个class是抽象的并不排除它在Dart中有一些具体的成员。
以下class为例:
abstract class Foo {
Foo(this.value);
final int value;
@override
String toString() => value.toString();
}
虽然它是抽象的,但它具有 属性 value
的具体实现,通过自定义构造函数进行初始化。
并且由于参数是必需的,子class 必须像这样调用超级构造函数:
class Subclass extends Foo {
Subclass(): super(42);
}