Trong lập trình Java hướng đối tượng, từ khóa “super” được sử dụng để tham chiếu và truy cập đến các thành phần (phương thức, trường, constructor) của lớp cha (superclass) từ một lớp con (subclass).
Các cách sử dụng chính của từ khóa “super” là:
- Gọi constructor của lớp cha: Khi một lớp con khởi tạo một đối tượng của nó, từ khóa “super” có thể được sử dụng để gọi constructor của lớp cha. Điều này đảm bảo rằng các phần tử của lớp cha được khởi tạo trước khi khởi tạo các phần tử của lớp con. Ví dụ:
java
class Animal {
public Animal() {
System.out.println("Animal constructor");
}
}
class Dog extends Animal {
public Dog() {
super(); // Gọi constructor của lớp cha Animal
System.out.println("Dog constructor");
}
}
- Truy cập phương thức và trường của lớp cha: Từ khóa “super” cũng có thể được sử dụng để truy cập đến phương thức và trường của lớp cha. Khi muốn gọi một phương thức hoặc truy cập trường của lớp cha mà đã bị ẩn bởi lớp con, chúng ta có thể sử dụng “super” để đề cập đến lớp cha. Ví dụ:
java
class Animal {
protected String name;
public void makeSound() {
System.out.println("Animal is making a sound");
}
}
class Dog extends Animal {
public void makeSound() {
super.makeSound(); // Gọi phương thức makeSound() của lớp cha Animal
System.out.println("Dog is barking");
}
public void printParentName() {
System.out.println(super.name); // Truy cập trường name của lớp cha Animal
}
}
Trong ví dụ này, phương thức makeSound()
của lớp Dog
ghi đè phương thức makeSound()
của lớp Animal
, nhưng vẫn có thể gọi phương thức của lớp cha bằng cách sử dụng “super”. Phương thức printParentName()
trong lớp Dog
cũng truy cập trường name
của lớp cha Animal
bằng cách sử dụng “super”.
Từ khóa “super” chỉ có thể được sử dụng trong phạm vi của lớp con và tham chiếu đến các thành phần của lớp cha.