Nội dung chính
Kiểu trả về hiệp biến
Kiểu trả về hiệp biến xác định rằng kiểu trả về có thể thay đổi theo hướng tương tự như lớp con.
Trước Java 5, bạn không thể ghi đè bất kỳ phương thức nào bằng cách thay đổi kiểu trả về. Còn từ Java 5 trở đi, bạn có thể ghi đè bằng cách thay đổi kiểu trả về nếu lớp con ghi đè bất kỳ phương thức nào mà kiểu trả về là Non-Primitive nhưng nó thay đổi kiểu trả về của nó thành kiểu lớp con. Hãy xem ví dụ đơn giản sau:
Ví dụ về kiểu trả về hiệp biến
class A { A get() { return this; } } public class B1 extends A { B1 get() { return this; } void message() { System.out.println("Test: kieu tra ve hiep bien"); } public static void main(String args[]) { new B1().get().message(); } }
Output:
Test: kieu tra ve hiep bien
Như bạn thấy trong ví dụ trên, kiểu trả về của phương thức get () của lớp A là A nhưng kiểu trả về của phương thức get () của lớp B1 là B1. Cả hai phương thức đều có kiểu trả về khác nhau, nhưng nó là ghi đè phương thức. Đây được gọi là kiểu trả về hiệp biến.