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