Java中的协变返回类型
时间:2020-01-09 10:35:18 来源:igfitidea点击:
据说Java中的方法重写相对于返回类型是协变的,这意味着允许返回类型在与子类相同的方向上变化。 Java 5中添加了Java中的协变返回类型功能。
什么是Java中的协变返回类型
首先,让我们尝试了解此协变返回类型的确切含义是什么?在Java 5之前,无法在子类中更改覆盖方法的返回类型,这意味着父类中的方法和子类中的覆盖方法应具有相同的名称,相同的编号和类型以及相同的参数。返回类型。
从Java 5开始,由于此协变量返回类型功能,被覆盖的方法可能具有与父类中的方法不同的返回类型。但是有一个限制,子类方法的返回类型必须是父类方法的返回类型的子类型。
例如,在父类中,有一个返回类型为R1的方法。在子类中,重写的方法可能具有不同的返回类型R2,但R2必须是R1的子类型。
Java协变量返回类型示例
class Parent{
Parent getInstance(){
return new Parent();
}
void parentTest(){
System.out.println("In parent class method");
}
}
class Child extends Parent{
// return type is subtype here
Child getInstance(){
return new Child();
}
void childTest(){
System.out.println("In child class method");
}
}
public class CovariantDemo {
public static void main(String[] args) {
Parent pobj = new Parent();
Child cobj = new Child();
pobj.getInstance().parentTest();
cobj.getInstance().childTest();
}
}
输出:
In parent class method In child class method

