Thuộc tính riêng tư khi kế thừa trong OOP JavaScript
Thuộc tính riêng tư không được kế thừa. Tuy nhiên, lớp con có thể thao tác với chúng thông qua các phương thức công khai của lớp cha. Hãy cùng xem xét trong thực tế. Giả sử chúng ta có lớp cha sau với một thuộc tính riêng tư cùng getter và setter của nó:
class User {
#name;
setName(name) {
this.#name = name;
}
getName() {
return this.#name;
}
}
Giả sử lớp sau kế thừa từ lớp cha:
class Student extends User {
}
Hãy tạo một đối tượng của lớp con:
let student = new Student;
Sử dụng phương thức của lớp cha để ghi giá trị vào thuộc tính riêng tư của nó:
student.setName('john');
Sử dụng phương thức của lớp cha để đọc thuộc tính riêng tư của nó:
let name = student.getName();
console.log(name);
Cho lớp cha sau:
class User {
#name;
#surn;
setName(name) {
this.#name = name;
}
getName() {
return this.#name;
}
setSurn(surn) {
this.#surn = surn;
}
getSurn() {
return this.#surn;
}
}
Hãy tạo lớp Employee
kế thừa từ lớp cha này.
Tạo một đối tượng của lớp Employee
và gọi các setter và getter đã kế thừa.
Trong lớp Employee hãy tạo
phương thức sau:
getFull() {
return this.#name + ' ' + this.#surn;
}
Hãy đảm bảo rằng mã của phương thức này sẽ dẫn đến lỗi.