如何使用相同的 class 名称在飞镖中扩展 class

How to extend a class in dart using the same class name

有没有办法像 java 那样使用与其父项相同的名称来扩展 dart 中的 class? 像这样...:[=​​13=]

class Connection extends com.mypackage.Connection{
    ...
}

通过使用包名称定义父 class,我可以使用相同的名称扩展 class,但这在 dart 中可能吗???

在 Dart 中,您可以使用前缀导入另一个库。这允许您限定对名称的引用,因此它不会与当前库中的相同名称冲突:

import "other_connection.dart" as other;
class Connection extends other.Connection { 
  ...
}

这也可用于限定来自两个不同导入的冲突名称。

(Dart 库有一个默认的导入范围,其中添加了导入的名称,可以直接引用。导入上的 as prefix 限定符意味着该导入被放入不同的导入范围,这你可以通过 prefix 引用。可以将多个库导入到相同的前缀导入范围。)

如果您在同一个导入中使用多个名称,并且只有其中一个有冲突,您可以导入带前缀和不带前缀的同一个库。 比如说,other_connection.dart 声明了 ConnectionDisconnection:

import "other_connection.dart" as other;
import "other_connection.dart";
class Connection extends other.Connection { ... }
class Separation extends Disconnection { ... }

带前缀的导入是 Dart 提供的一种避免导入名称冲突的工具。另一个工具是隐藏(使用 hideshow),主要用于避免不同导入之间的冲突。 您可以根据需要使用它们(您可以在 as other 之后添加 show Connection 或在无前缀导入之后添加 hide Connection ,但在这种简单的情况下都不需要)。