ชนิดการคืนค่า Covariant (Covariant return type) หมายถึงชนิดการคืนค่าของเมธอดที่ override มันอนุญาตให้จำกัดชนิดการคืนค่าของเมธอดที่ถูก override ลงโดยไม่ต้องแคสต์ชนิดหรือตรวจสอบชนิดการคืนค่า Covariant return type ทำงานได้เฉพาะกับชนิดการคืนค่าที่ไม่ใช่ primitive
ตั้งแต่ Java 5 เป็นต้นไป เราสามารถ override เมธอดโดยเปลี่ยนชนิดการคืนค่าได้ เพียงแค่ปฏิบัติตามเงื่อนไขที่ว่า ชนิดการคืนค่าต้องเป็น subclass ของชนิดการคืนค่าของเมธอดที่ถูก override
ตัวอย่างต่อไปนี้แสดงให้เห็นถึงสิ่งนี้:
ตัวอย่าง
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