11.Kiểu trả về Covariant trong lập trình java hướng đối tượng

Kiểu trả về covariant (covariant return type) trong lập trình Java hướng đối tượng cho phép lớp con (subclass) trả về kiểu dữ liệu cụ thể hơn hoặc là một kiểu con của kiểu dữ liệu được khai báo trong phương thức của lớp cha (superclass). Điều này giúp chúng ta sử dụng kết quả trả về của phương thức lớp con mà không cần ép kiểu (type casting) để khớp với kiểu dữ liệu mong đợi.

Để sử dụng kiểu trả về covariant, chúng ta cần tuân thủ các quy tắc sau:

  1. Phương thức lớp con phải có kiểu trả về là một kiểu con của kiểu trả về trong phương thức lớp cha của lập trình hướng đối tượng với java.
  2. Phương thức lớp con phải giữ nguyên số lượng và kiểu tham số giống nhau hoặc giống hơn phương thức lớp cha.
  3. Kiểu trả về covariant chỉ áp dụng cho các kiểu trả về thuộc kiểu reference (tham chiếu) và không áp dụng cho kiểu dữ liệu nguyên thủy (primitive).

Ví dụ, giả sử chúng ta có lớp cha Animal và lớp con Dog như sau:

java
class Animal {
    public Animal reproduce() {
        return new Animal();
    }
}

class Dog extends Animal {
    @Override
    public Dog reproduce() {
        return new Dog();
    }
}

Trong ví dụ này, phương thức reproduce() trong lớp Animal trả về một đối tượng của lớp Animal. Tuy nhiên, phương thức reproduce() trong lớp con Dog được ghi đè (overridden) và trả về một đối tượng của lớp Dog. Điều này cho phép chúng ta gọi phương thức reproduce() trên một đối tượng Dog và nhận được kết quả trả về là một đối tượng Dog, mà không cần ép kiểu.

java
Animal animal = new Dog();
Dog offspring = animal.reproduce(); // Không cần ép kiểu

Chú ý rằng kiểu trả về covariant chỉ áp dụng từ Java 5 trở đi và chỉ cho phép phương thức ghi đè, không áp dụng cho các trường (fields) hoặc constructor.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top