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);