Các phương thức riêng tư khi kế thừa trong OOP JavaScript
Các phương thức riêng tư không được kế thừa. Điều này được thiết kế có chủ đích để không vi phạm tính đóng gói. Hãy xem xét qua một ví dụ. Giả sử chúng ta có lớp cha sau đây với một phương thức riêng tư:
class User {
setName(name) {
this.name = name;
}
getName() {
return this.#capeFirst(this.name);
}
#capeFirst(str) {
return str[0].toUpperCase() + str.slice(1);
}
}
Giả sử lớp sau kế thừa từ lớp cha:
class Student extends User {
setSurn(surn) {
this.surn = surn;
}
getSurn() {
return this.surn;
}
}
Giả sử lớp con muốn sử dụng phương thức riêng tư của lớp cha. JavaScript sẽ không cho phép điều này và sẽ đưa ra lỗi:
class Student extends User {
setSurn(surn) {
this.surn = surn;
}
getSurn() {
return this.#capeFirst(this.surn); // sẽ báo lỗi
}
}
Hãy thử trong lớp Employee
sử dụng phương thức riêng tư
của lớp cha.