协变返回类型是指重写方法的返回类型。它允许缩小重写方法的返回类型,而无需强制转换类型或检查返回类型。协变返回类型仅适用于非原始返回类型。
从Java 5开始,仅通过遵守返回类型是重写的方法返回类型的子类的条件,就可以通过更改其返回类型来覆盖方法。
以下示例展示了相同的内容。
class SuperClass { SuperClass get() { System.out.println("SuperClass"); return this; } } public class Tester extends SuperClass { Tester get() { System.out.println("SubClass"); return this; } public static void main(String[] args) { SuperClass tester = new Tester(); tester.get(); } }
输出结果
Subclass