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
Animalcó một constructor nhận tham sốnamevà 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 classDogkế thừa từ classAnimal. - Constructor của class con gọi
super(name)để kế thừa thuộc tínhnametừ 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ư
breedvàinfo.
- Sử dụng từ khóa
-
Tạo đối tượng từ class con:
- Đối tượng
dogđược tạo từ classDogvới các tham sốnamevàbreed. - Các phương thức
speakvàinfocó 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