是否可以在Dart中使用默认的私有构造函数扩展类?

时间:2018-06-26 08:03:20

标签: dart

假设我们有一个class a

class A {
  A._();
}

默认构造函数私有A._()

有什么办法可以extends上那堂课吗?

问题

class B extends A {

}

这会导致编译器错误

The superclass 'A' doesn't have a zero argument constructor.

尝试为B我自己(B())组成 any 构造函数会导致另一个错误:

The superclass 'A' doesn't have an unnamed constructor.

1 个答案:

答案 0 :(得分:3)

没有,没有办法。这是防止扩展的有效方法。

您仍然可以执行该类。

class B implements A {}

如果类 also 具有公共的非工厂构造函数,您仍然可以通过将构造函数调用转发到此类超类的命名构造函数来对其进行扩展。

class B extends A {
  B() : super.other();
}