Trong JavaScript, việc kế thừa từ một class khác có thể được thực hiện bằng cách sử dụng từ khóa extends
. Kế thừa cho phép một class con (subclass) kế thừa các thuộc tính và phương thức từ một class cha (superclass). Đây là một tính năng quan trọng trong lập trình hướng đối tượng giúp tái sử dụng mã và mở rộng chức năng.
Cú Pháp Kế Thừa Trong JavaScript
Ví dụ cơ bản về kế thừa:
// Class cha
class Animal {
constructor(name) {
this.name = name;
}
speak() {
console.log(`${this.name} makes a noise.`);
}
}
// Class con kế thừa từ class cha
class Dog extends Animal {
constructor(name, breed) {
super(name); // Gọi constructor của class cha
this.breed = breed;
}
speak() {
console.log(`${this.name} barks.`);
}
info() {
console.log(`${this.name} is a ${this.breed}.`);
}
}
// Tạo đối tượng từ class con
const dog = new Dog('Rex', 'German Shepherd');
dog.speak(); // Rex barks.
dog.info(); // Rex is a German Shepherd.
Giải Thích Chi Tiết:
-
Khai báo class cha (Animal):
- Class
Animal
có một constructor nhận tham sốname
và một phương thứcspeak
để in ra một thông báo.
- Class
-
Khai báo class con (Dog) kế thừa từ class cha:
- Sử dụng từ khóa
extends
để chỉ định rằng classDog
kế thừa từ classAnimal
. - Constructor của class con gọi
super(name)
để kế thừa thuộc tínhname
từ class cha.super
được sử dụng để gọi constructor và các phương thức của class cha. - Class con có thể định nghĩa thêm các thuộc tính và phương thức riêng như
breed
vàinfo
.
- Sử dụng từ khóa
-
Tạo đối tượng từ class con:
- Đối tượng
dog
được tạo từ classDog
với các tham sốname
vàbreed
. - Các phương thức
speak
vàinfo
có thể được gọi từ đối tượngdog
.
- Đối tượng
Ghi Đè Phương Thức (Method Overriding):
Trong ví dụ trên, phương thức speak
trong class Dog
đã ghi đè phương thức speak
của class Animal
. Ghi đè phương thức cho phép class con cung cấp triển khai riêng của một phương thức đã được định nghĩa trong class cha.
Sử Dụng super
Trong Các Phương Thức Khác:
Ngoài constructor, super
cũng có thể được sử dụng trong các phương thức khác để gọi các phương thức của class cha.
Ví dụ:
class Animal {
speak() {
console.log('Animal makes a noise.');
}
}
class Dog extends Animal {
speak() {
super.speak(); // Gọi phương thức speak của class cha
console.log('Dog barks.');
}
}
const dog = new Dog();
dog.speak();
// Output:
// Animal makes a noise.
// Dog barks.
Tổng Kết:
- Sử dụng từ khóa
extends
để kế thừa từ một class khác. - Sử dụng từ khóa
super
để gọi constructor và các phương thức của class cha. - Ghi đè phương thức cho phép class con cung cấp triển khai riêng cho các phương thức của class cha.
Comments