Java 中的协变返回类型是什么?
java
通常,在重写时,超类和子类中的方法具有相同的名称和参数。但是,当涉及到返回类型时,子类中的方法可以返回超类中方法的返回类型的子类型。
示例
如果您观察以下示例,超类有一个名为 demoMethod() 的方法,它返回一个列表类型的值。如果我们重写此方法,子类中的方法可以返回 List 类型的值(在超类中),或者它也可以返回 List 的子类型(超类中方法的返回类型),例如 ArrayList、Stack、Vector 等。
在这种情况下,子类方法返回一个 ArrayList,它是超类返回类型的子类型,即 List。此子类型 (ArrayList) 称为 协变类型。
示例
class Test{ int data =100; Test demoMethod(){ return this; } } public class Sample extends Test{ int data = 1000; Sample demoMethod(){ return this; } public static void main(String args[]){ Sample sam = new Sample(); System.out.println(sam.demoMethod().data); } }
输出
1000