Trong hướng dẫn này, bạn sẽ tìm hiểu về kế thừa lớp JavaScript với sự trợ giúp của các ví dụ.
Kế thừa giai cấp
Kế thừa cho phép bạn xác định một lớp có tất cả các chức năng từ một lớp cha và cho phép bạn thêm nhiều hơn nữa.
Sử dụng kế thừa lớp, một lớp có thể kế thừa tất cả các phương thức và thuộc tính của một lớp khác.
Kế thừa là một tính năng hữu ích cho phép mã có thể tái sử dụng.
Để sử dụng kế thừa lớp, bạn sử dụng extends
từ khóa. Ví dụ,
// parent class
class Person {
constructor(name) {
this.name = name;
}
greet() {
console.log(`Hello ${this.name}`);
}
}
// inheriting parent class
class Student extends Person {
}
let student1 = new Student('Jack');
student1.greet();
Đầu ra
Hello Jack
Trong ví dụ trên, Student
lớp kế thừa tất cả các phương thức và thuộc tính của Person
lớp. Do đó, Student
lớp bây giờ sẽ có thuộc name
tính và greet()
phương thức.
Sau đó, chúng tôi truy cập greet()
phương thức của Student
lớp bằng cách tạo một student1
đối tượng.
Từ khóa super () JavaScript
Các super
từ khóa được sử dụng trong một lớp trẻ biểu thị lớp cha của nó. Ví dụ,
// parent class
class Person {
constructor(name) {
this.name = name;
}
greet() {
console.log(`Hello ${this.name}`);
}
}
// inheriting parent class
class Student extends Person {
constructor(name) {
console.log("Creating student class");
// call the super class constructor and pass in the name parameter
super(name);
}
}
let student1 = new Student('Jack');
student1.greet();
Ở đây, lớp super
bên trong Student
đề cập đến Person
lớp. Do đó, khi phương thức khởi tạo của Student
lớp được gọi, nó cũng gọi phương thức khởi tạo của Person
lớp gán một thuộc tính tên cho nó.
Phương pháp hoặc thuộc tính ghi đè
Nếu một lớp con có cùng phương thức hoặc thuộc tính với tên của lớp cha, nó sẽ sử dụng phương thức và thuộc tính của lớp con. Khái niệm này được gọi là ghi đè phương thức. Ví dụ,
// parent class
class Person {
constructor(name) {
this.name = name;
this.occupation = "unemployed";
}
greet() {
console.log(`Hello ${this.name}.`);
}
}
// inheriting parent class
class Student extends Person {
constructor(name) {
// call the super class constructor and pass in the name parameter
super(name);
// Overriding an occupation property
this.occupation = 'Student';
}
// overriding Person's method
greet() {
console.log(`Hello student ${this.name}.`);
console.log('occupation: ' + this.occupation);
}
}
let p = new Student('Jack');
p.greet();
Đầu ra
Hello student Jack. occupation: Student
Ở đây, thuộc occupation
tính và greet()
phương thức hiện diện trong Person
lớp cha và Student
lớp con . Do đó, Student
lớp ghi đè thuộc occupation
tính và greet()
phương thức.
Sử dụng Thừa kế
Vì một lớp con có thể kế thừa tất cả các chức năng của lớp cha, điều này cho phép mã có thể tái sử dụng.
Khi một chức năng được phát triển, bạn có thể kế thừa nó một cách đơn giản. Không cần phải phát minh lại bánh xe. Điều này cho phép mã sạch hơn và dễ bảo trì hơn.
Vì bạn cũng có thể thêm các chức năng của riêng mình trong lớp con, bạn chỉ có thể kế thừa các chức năng hữu ích và xác định các tính năng cần thiết khác.