Người dịch: Lê Trung Kiên lớp java 08
Bài viết gốc: https://www.baeldung.com/java-super

1. Mở đầu

Trong bài viết này, chúng ta hãy cùng tìm hiểu về từ khóa super trong Java.
Từ khóa super trong Java là một biến tham chiếu, được sử dụng để tham chiếu trực tiếp đến đối tượng của lớp cha gần nhất.

2.Từ khóa super trong hàm khởi tạo

Ta có thể dùng super() để gọi tới hàm khởi tạo mặc định của lớp cha. Tương tự như this(), super() phải là câu lệnh đầu tiên trong hàm khởi tạo của lớp con.
Trong ví dụ sau, ta có super(message) với tham số kiểu String:

public class SuperSub extends SuperBase {

    public SuperSub(String message) {
        super(message);
    }
}

Hãy cùng tạo ra một instace của lớp con và xem điều gì sẽ diễn ra:

SuperSub child = new SuperSub("message from the child class");

Từ khóa new gọi tới hàm khởi tạo của lớp con SuperSub, tuy nhiên trước đó nó sẽ gọi tới hàm khởi tạo của lớp cha trước và truyền tham số vào lớp con.

*Nếu chưa biết về các hàm khởi tạo, hãy đọc bài viết này để tìm hiểu thêm.

3. Truy cập tới các biến của lớp cha

Hãy cùng tạo ra lớp cha với biến message:

public class SuperBase {
    String message = "super class";

    // hàm khởi tạo mặc định

    public SuperBase(String message) {
        this.message = message;
    }
}

Giờ ta sẽ tạo một lớp con cũng có biến là massage:

public class SuperSub extends SuperBase {

    String message = "child class";

    public void getParentMessage() {
        System.out.println(super.message);
    }
}

Output:

super class

Như vậy ta có thể truy cập vào biến của lớp cha từ lớp con bằng cách sử dụng từ khóa super.

*Nếu bạn chưa biết từ khóa this bên trên là gì, hãy tìm hiểu qua bài viết này.

4. Từ khóa super trong phương thức ghi đè (Overriding)

Ở ví dụ trên, giờ ta sẽ thêm phương thức printMessage() vào lớp cha:

public class SuperBase {

    String message = "super class";

    public void printMessage() {
        System.out.println(message);
    }
}

Và ta ghi đè phương thức đó trong lớp con:

public class SuperSub extends SuperBase {

    String message = "child class";

    public SuperSub() {
        super.printMessage();
        printMessage();
    }

    public void printMessage() {
        System.out.println(message);
    }
}

Ta có thể dùng super để truy cập phương thức printMessage() được ghi đè từ lớp con. Phương thức super.printMessage() trong hàm khởi tạo gọi tới phương thức printMessage() từ lớp cha.

5.Kết luận

Qua bài viết này, hi vọng các bạn có thể hiểu hơn về từ khóa super trong Java. Cảm ơn các bạn đã theo dõi!