Covariant return = khi override một method, class con được phép trả về kiểu con (subtype) của kiểu mà method cha khai báo, thay vì đúng y kiểu đó.
Có từ Java 5.
java
class Animal { Animal reproduce() { return new Animal(); } }
class Cat extends Animal {
@Override Cat reproduce() { return new Cat(); } // trả Cat, không cần Animal
}Trước Java 5 phải trả đúng Animal, buộc caller ép kiểu (Cat). Covariant return bỏ được cast đó — hay gặp ở clone() (override trả đúng kiểu class) và Builder pattern.
Lưu ý: chỉ áp dụng cho kiểu trả về là reference (không cho primitive), và đây là override thật, không phải overload (chữ ký còn lại giữ nguyên).