java 协变返回

原创 2013年12月04日 10:03:49

java 协变返回

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

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

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

例如:

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

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

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


Java之协变返回类型理解和简单实例

开心一笑【早上起来,发现天气越来越冷了,白粽子记得要多包几层叶】提出问题Java中协变返回类型如何理解???解决问题概念导出类(子类)覆盖(即重写)基类(父类)方法时,返回的类型可以是基类方法返回类型...
  • huangwenyi1010
  • huangwenyi1010
  • 2016年12月04日 15:39
  • 2862

LearnJava 多态之协变返回类型

协变返回类型: JavaSE5 中添加了协变返回类型,它表示在导出类中的被覆盖方法可以可以返回基类方法的返回类型的某种导出类型:class Grain{ public String ...
  • SinyCosh
  • SinyCosh
  • 2016年11月15日 00:12
  • 625

Java协变返回类型

协变返回类型 子类重写父类方法时,返回类型可以是基类的子类 实例 class Base{ //子类Derive将重写此方法,将返回类型设置为InputStream的子类 public I...
  • zhugewendu
  • zhugewendu
  • 2017年05月28日 10:21
  • 152

协变、逆变与不变:数组、泛型、与返回类型

1. 前言之前几篇博文,有些地方涉及到了协变性、逆变性与不变性在Java中的表现,所以这篇博文将重点记录这方面的内容,并辅以JDK源码中的一些实例,加以说明。2. 定义这里讨论的协变、逆变与不变都是编...
  • yi_Afly
  • yi_Afly
  • 2016年07月30日 17:38
  • 887

C++动态绑定及返回类型协变

C++多态之动态绑定:   1、概念:在程序执行期间(非编译期)判断所引用对象的实际类型,根据其实际类型调用相应的方法。 使用virtual关键字修饰类的成员函数时,指明该函数为虚函数,派生类需...
  • Sharp_UP
  • Sharp_UP
  • 2016年11月16日 18:01
  • 691

java 协变式覆盖与泛型重载

整理两篇文章《Java Generics and Collections》读书笔记三:协变式覆盖与泛型重载  与   关于泛型和重载的小问题 《Java Generics and Colle...
  • kiss_the_sun
  • kiss_the_sun
  • 2012年08月09日 10:55
  • 4265

Java之协变返回类型详解(附源码)

前言     Java SE5中添加了协变返回类型,它表示在导出类中的被覆盖方法可以返回基类方法的返回类型的某种导出类型: 示例源码 package com.mufeng...
  • u013693649
  • u013693649
  • 2016年07月16日 11:25
  • 728

[c++ primer plus]虚函数的返回类型协变

派生类转换为基类,hierarchy向上走,称为upcasting;基类转换为派生类,hierarchy向下走,称为downcasting。downcasting是不安全的,一般不被允许。含有虚函数的...
  • yzd_real
  • yzd_real
  • 2007年10月25日 14:29
  • 2478

Java那点儿事2——协变式返回值

转自:http://shinestudio.iteye.com/blog/767447 协变式返回值 没听说过吧!这又是Java5中新增的功能。其实协变式返回值很容易,并没有你想的那么复杂,3分钟绝...
  • a7833756
  • a7833756
  • 2012年07月28日 13:44
  • 700

c++返回类型协变

在C++中,只要原来的返回类型是指向基类的指针或引用,新的返回类型是指向派生类的指针或引用,覆盖的方法就可以改变返回类型。这样的类型称为协变返回类型(Covariant returns type).返...
  • gjggj
  • gjggj
  • 2017年05月22日 15:25
  • 347
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java 协变返回
举报原因:
原因补充:

(最多只允许输入30个字)