为什么要将值传递给超类?超级的子类

时间:2019-09-05 17:56:08

标签: oop flutter dart object-oriented-analysis

我正在检查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-这种代码的用例是什么?

非常感谢。

1 个答案:

答案 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); 
}