การเรียกใช้เมธอดที่ถูกโอเวอร์ไรด์ใน OOP ใน JavaScript

เมื่อทำการโอเวอร์ไรด์ คลาสลูกจะสูญเสีย การเข้าถึงเมธอดของคลาสพ่อแม่ที่ถูกโอเวอร์ไรด์ อย่างไรก็ตาม การเข้าถึงเมธอดนั้นยังคงเป็นไปได้ สิ่งนี้ทำได้โดยใช้คำสำคัญ super, ซึ่งชี้ไปยังคลาสพ่อแม่

มาดูตัวอย่างกัน เมื่อเราอาจต้องการการเข้าถึง เมธอดของคลาสพ่อแม่ สมมติว่าเรามีคลาสพ่อแม่ดังต่อไปนี้:

javascriptclass User {
  setName(name) {
    this.name = name;
  }
  getName() {
    return this.name;
  }
}

สมมติว่าในคลาสลูก เราได้โอเวอร์ไรด์เมธอดของพ่อแม่:

javascriptclass Student extends User {
  setName(name) {
    if (name.length > 0) {
      this.name = name;
    } else {
      throw new Error('student name error');
    }
  }
}

จะสังเกตได้ว่าในเมธอดที่ถูกโอเวอร์ไรด์ เมื่อเงื่อนไขเป็นจริง รหัสที่ทำงานจริงๆ คือรหัสของเมธอดพ่อแม่ ทำให้เกิดการซ้ำซ้อนของรหัสที่ไม่จำเป็น

เราสามารถกำจัดมันได้โดยการเรียกใช้ เมธอดของพ่อแม่ มาทำกัน:

javascriptclass Student extends User {
  setName(name) {
    if (name.length > 0) {
      super.setName(name); // เมธอดของพ่อแม่
    } else {
      throw new Error('student name error');
    }
  }
}
Задание 1

กำหนดรหัสต่อไปนี้:

javascriptclass User {
  setAge(age) {
    if (age >= 0) {
      this.age = age;
    } else {
      throw new Error('need age more 0');
    }
  }
}
class Employee {
  setAge(age) {
    if (age <= 120) {
      if (age >= 0) {
        this.age = age;
      } else {
        throw new Error('need age more 0');
      }
    } else {
      throw new Error('need age less 120');
    }
  }
}

ในคลาส Employee ให้แก้ไข และลดความซับซ้อนของตัวตั้งค่าอายุ โดยใช้ เมธอดเดิมของคลาสพ่อแม่