首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当方法没有被重写时,为什么要使用“协变”?

当方法没有被重写时,为什么要使用“协变”?
EN

Stack Overflow用户
提问于 2021-01-30 00:40:32
回答 1查看 235关注 0票数 3

来自here

代码语言:javascript
复制
bool shouldReclip(covariant CustomClipper<T> oldClipper);

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-30 04:49:22

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

如果打算扩展类,这可以是子类作者的服务(和文档),以便他们知道参数应该是协变使用的。

如果你看一下this subclass,你可以看到他们声明:

代码语言:javascript
复制
@override
bool shouldReclip(_DecorationClipper oldClipper) {...}

它用_DeclarationClipper (实现了CustomClipper<Path>)共同覆盖了参数类型CustomClipper<Path>,并且它们不必在这里编写covariant,因为超类为它们声明了它。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65958413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档