颤动中的协变函数

functioning of covariant in flutter

我在浏览 dart 文档时遇到了这段代码和这个术语 covariant。我浏览了一些文档,但没有得到它的 function 是什么。总是感谢详细解释的答案。

class Animal {
  void chase(Animal x) { ... }
}

class Mouse extends Animal { ... }

class Cat extends Animal {
  @override
  void chase(covariant Mouse x) { ... }
}

通过使用 covariant 关键字,您禁用 type-check 并负责确保您在实践中不违反合同。

正如你在例子中看到的,如果你重写了一个方法,它的参数也应该是相同的。但是如果你使用协变,它将允许你使用 Mouse 而不是 Animal。

只需尝试删除关键字协变,它就会变得不言自明。

您将收到一个编译器错误,提示您正在重写参数类型不匹配的方法 Expected: Animal, Actual: Mouse

但是,Mouse 是 Animal 的子类型,所以如果你想允许这种情况没有错误,请添加 covariant 关键字

之前

之后

在这里你可以看到老鼠是动物的亚种