วิธีการส่วนตัวในการสืบทอดใน OOP ใน JavaScript
วิธีการส่วนตัวไม่ได้รับการสืบทอด นี่ถูกออกแบบมาเป็นพิเศษเพื่อไม่ให้ละเมิด การห่อหุ้ม ลองดูตัวอย่างกัน สมมติว่าเรามีคลาสหลักดังต่อไปนี้ พร้อมกับวิธีการส่วนตัว:
class User {
setName(name) {
this.name = name;
}
getName() {
return this.#capeFirst(this.name);
}
#capeFirst(str) {
return str[0].toUpperCase() + str.slice(1);
}
}
สมมติว่าคลาสต่อไปนี้สืบทอดมาจากคลาสหลัก
class Student extends User {
setSurn(surn) {
this.surn = surn;
}
getSurn() {
return this.surn;
}
}
สมมติว่าคลาสลูกต้องการใช้งาน วิธีการส่วนตัวของคลาสหลัก JavaScript จะไม่อนุญาตและจะแสดงข้อผิดพลาด:
class Student extends User {
setSurn(surn) {
this.surn = surn;
}
getSurn() {
return this.#capeFirst(this.surn); // จะเกิดข้อผิดพลาด
}
}
ลองใช้ในคลาส Employee
เพื่อใช้ประโยชน์จากวิธีการส่วนตัว
ของคลาสหลัก