วิธีการส่วนตัวในการสืบทอดใน OOP ใน JavaScript

วิธีการส่วนตัวไม่ได้รับการสืบทอด นี่ถูกออกแบบมาเป็นพิเศษเพื่อไม่ให้ละเมิด การห่อหุ้ม ลองดูตัวอย่างกัน สมมติว่าเรามีคลาสหลักดังต่อไปนี้ พร้อมกับวิธีการส่วนตัว:

javascriptclass User {
  setName(name) {
    this.name = name;
  }
  getName() {
    return this.#capeFirst(this.name);
  }
  
  #capeFirst(str) {
    return str[0].toUpperCase() + str.slice(1);
  }
}

สมมติว่าคลาสต่อไปนี้สืบทอดมาจากคลาสหลัก

javascriptclass Student extends User {
  setSurn(surn) {
    this.surn = surn;
  }
  getSurn() {
    return this.surn;
  }
}

สมมติว่าคลาสลูกต้องการใช้งาน วิธีการส่วนตัวของคลาสหลัก JavaScript จะไม่อนุญาตและจะแสดงข้อผิดพลาด:

javascriptclass Student extends User {
  setSurn(surn) {
    this.surn = surn;
  }
  getSurn() {
    return this.#capeFirst(this.surn); // จะเกิดข้อผิดพลาด
  }
}
Задание 1

ลองใช้ในคลาส Employee เพื่อใช้ประโยชน์จากวิธีการส่วนตัว ของคลาสหลัก