关闭

java 协变返回

281人阅读 评论(0) 收藏 举报

java 协变返回

所谓协变,就是父类和子类保持相同形式的变化。

在java5.0中,只要子类方法与超类方法具有相同的方法签名,或者子类方法的返回值是超类方法的子类型,就可以覆盖。

面向对象语言中,协变返回方法指的是一个子类在覆盖超类的方法的时候,方法的返回值可以被一个“更窄”的类型所替代。

例如:

复制代码
class Collection { 
     Iterator iterator() { ... } 
} 
 
class List extends Collection { 
    @Override  
    ListIterator iterator() { ... } 
}  
复制代码

Iterator函数获得到当前集合的迭代器,在子类中,迭代器有着更确切的表示,所以使用了Iterator的子类ListIterator作为新的返回值。

注意:"协变返回(covariant return)",仅在subclass(子类)的返回类型是superclass(父类)返回类型的extension(继承)时才被容许。


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:62124次
    • 积分:1146
    • 等级:
    • 排名:千里之外
    • 原创:41篇
    • 转载:82篇
    • 译文:1篇
    • 评论:3条