当前位置:  开发笔记 > 编程语言 > 正文

关于类继承的协方差与逆变

如何解决《关于类继承的协方差与逆变》经验,为你挑选了1个好方法。

概念'协方差'和'逆变'是什么意思?

给出了两个类,动物大象(继承自Animal),我的理解是,如果你试图将一只大象放入一系列动物中,你会得到一个运行时错误,这是因为大象"更大"(更多)特定的)比动物.但是你可以将动物放入大象阵列中,看看大象如何保证包含动物属性吗?



1> Bill the Liz..:

你倒退了.您可以将一个Elephant添加到Animal数组中,因为它是一个 Animal,并且它保证拥有Animal所需的所有方法.您不能将动物添加到大象阵列,因为它并没有具备所有这些大象需要有方法.

关于协方差和逆变的维基百科文章对此有一个很好的解释:

在编程语言的类型系统中,从类型到类型的运算符是协变的,如果它保留类型的排序,≤,类型从更具体的类型到更通用的类型.如果它颠倒了这种顺序,它就是逆变的.如果这些都不适用,则运算符是不变的.这些术语来自类别理论.

另外,你说大象的类型"更大",事实并非如此.类型动物是"更大"的,因为它包含更具体的类型,如大象,长颈鹿和狮子.

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有