协变返回类型
2014-04-06 19:01
120 查看
在面向对象程序设计中,协变返回类型指的是子类中的成员函数的返回值类型不必严格等同于父类中被重写的成员函数的返回值类型,而可以是更 "狭窄" 的类型。
Java 5.0添加了对协变返回类型的支持,即子类覆盖(即重写)基类方法时,返回的类型可以是基类方法返回类型的子类。协变返回类型允许返回更为具体的类型。
示例程序如下:
import java.io.ByteArrayInputStream;
import java.io.InputStream;
class Base
{
//子类Derive将重写此方法,将返回类型设置为InputStream的子类
public InputStream getInput()
{
return System.in;
}
}
public class Derive extends Base
{
@Override
public ByteArrayInputStream getInput()
{
return new ByteArrayInputStream(new byte[1024]);
}
public static void main(String[] args)
{
Derive d=new Derive();
System.out.println(d.getInput().getClass());
}
}
Java 5.0添加了对协变返回类型的支持,即子类覆盖(即重写)基类方法时,返回的类型可以是基类方法返回类型的子类。协变返回类型允许返回更为具体的类型。
示例程序如下:
import java.io.ByteArrayInputStream;
import java.io.InputStream;
class Base
{
//子类Derive将重写此方法,将返回类型设置为InputStream的子类
public InputStream getInput()
{
return System.in;
}
}
public class Derive extends Base
{
@Override
public ByteArrayInputStream getInput()
{
return new ByteArrayInputStream(new byte[1024]);
}
public static void main(String[] args)
{
Derive d=new Derive();
System.out.println(d.getInput().getClass());
}
}
相关文章推荐
- java泛型中桥方法以及协变返回类型
- 新内容:协变返回类型
- LearnJava 多态之协变返回类型
- C++动态绑定及返回类型协变
- 协变返回类型
- 函数重写(override)与协变返回类型(covariant return type)
- 理解Java中的协变返回类型
- 协变返回类型
- java编程思想--协变返回类型
- 编程思想 之「多态、初始化顺序、协变返回类型」
- c++ 类覆盖方法中的协变返回类型
- 协变返回类型
- Java之协变返回类型理解和简单实例
- c++返回类型协变
- java中的协变返回类型
- 协变返回类型
- [Thinking in Java] - No.6 协变返回类型
- [c++ primer plus]虚函数的返回类型协变
- 第八章 多态总结 协变返回类型 向下转型 和运行时类型识别继承中 is-a 和 is-like-a及子类父类的方法调用(ClassCastException)
- c++ 类覆盖方法中的协变返回类型