Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart 为什么';协变';在方法未被重写时使用?_Dart - Fatal编程技术网

Dart 为什么';协变';在方法未被重写时使用?

Dart 为什么';协变';在方法未被重写时使用?,dart,Dart,发件人: bool-shouldReclip(协变CustomClipper-oldClipper); 好的,当您重写一个方法,明确地告诉分析器您将为它提供一个有效类型时,就会使用关键字convarant。但是在CustomClipper类中,没有这样的覆盖,那么为什么要使用协变呢?您可以在超类中将参数标记为协变,然后子类也会自动将其参数标记为协变 如果要扩展该类,则可以为子类作者提供服务(和文档),以便他们知道该参数应该以协变方式使用 如果您查看,您可以看到他们声明: @覆盖 布尔应该重新剪

发件人:

bool-shouldReclip(协变CustomClipper-oldClipper);

好的,当您重写一个方法,明确地告诉分析器您将为它提供一个有效类型时,就会使用关键字
convarant
。但是在
CustomClipper
类中,没有这样的覆盖,那么为什么要使用
协变
呢?

您可以在超类中将参数标记为
协变
,然后子类也会自动将其参数标记为
协变

如果要扩展该类,则可以为子类作者提供服务(和文档),以便他们知道该参数应该以协变方式使用

如果您查看,您可以看到他们声明:

@覆盖
布尔应该重新剪辑(_decorationclipperoldcipper){…}

它用
\u DeclarationClipper
(实现
CustomClipper
)以协变方式重写参数类型
CustomClipper
,并且他们不必在这里编写
协变
,因为超类为他们声明了它。

谢谢你,基本上就像在超类中使用
协变
一样,我们让子类忽略了
协变
的需要。
bool shouldReclip(covariant CustomClipper<T> oldClipper);