Kế thừa Lớp
Kế thừa cho phép bạn định nghĩa một lớp mà kế thừa toàn bộ chức năng từ một lớp cha và cho phép bạn thêm thêm chức năng mới.
Sử dụng kế thừa lớp, một lớp có thể kế thừa toàn bộ 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 tái sử dụng mã.
Để sử dụng kế thừa lớp, bạn sử dụng từ khóa extends
. 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();
Kết quả
Hello Jack
Trong ví dụ trên, lớp Student
kế thừa toàn bộ phương thức và thuộc tính của lớp Person
. Do đó, lớp Student
bây giờ sẽ có thuộc tính name
và phương thức greet()
.
Sau đó, chúng ta truy cập phương thức greet()
của lớp Student
bằng cách tạo một đối tượng student1
.
Từ khóa super() trong JavaScript
Từ khóa super
được sử dụng bên trong một lớp con để chỉ đến 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, super
bên trong lớp Student
tham chiếu đến lớp Person
. Do đó, khi constructor của lớp Student
được gọi, nó cũng gọi constructor của lớp Person
và gán một thuộc tính name
cho nó.
Ghi đè Phương thức hoặc Thuộc tính
Nếu một lớp con có cùng tên phương thức hoặc thuộc tính với 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 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();
Kết quả
Hello student Jack.
occupation: Student
Cảm ơn bạn!
Ở đây, thuộc tính occupation
và phương thức greet()
xuất hiện trong lớp cha Person
và lớp con Student
. Do đó, lớp Student
ghi đè lên thuộc tính occupation
và phương thức greet()
.
Các Ứng dụng của Kế thừa
- 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 tái sử dụng mã.
- Một khi chức năng đã được phát triển, bạn có thể đơn giản là kế thừa nó. Không cần phải phát minh lại bánh xe. Điều này giúp mã code trở nên sạch hơn và dễ bảo trì hơn.
- Bởi vì bạn cũng có thể thêm các chức năng riêng vào lớp con, bạn có thể kế thừa chỉ những chức năng hữu ích và định nghĩa các tính năng khác cần thiết.
- Bài viết blog này được xuất bản ban đầu tại:https://www.programiz.com/
Cảm ơn bạn!