การแทนที่เมธอดของคลาสแม่ใน OOP ใน JavaScript

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

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

ลองสร้างเมธอดชื่อเดียวกันในคลาสลูก:

javascriptclass Student extends User {
  setName(name) {
    
  }
}

โดยทั่วไป การแทนที่เมธอดของคลาสแม่ ทำเพื่อเปลี่ยนหรือเพิ่มพฤติกรรมของเมธอดนั้น ในกรณีนี้ลองเพิ่มการตรวจสอบความยาวของชื่อ:

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

ลองมาทดสอบว่าเมธอดที่ถูกเรียกคือเมธอดที่ถูกแทนที่จริง เริ่มต้นด้วยการสร้างอ็อบเจ็กต์ของคลาสลูก:

javascriptlet student = new Student;

ตอนนี้เรียกเมธอดของเรา โดยส่งค่าที่ถูกต้องเข้าไป:

javascriptstudent.setName('john');

จากนั้นเรียกเมธอดโดยส่งค่า ที่ไม่ถูกต้องเข้าไป ผลลัพธ์เราจะเห็นข้อผิดพลาดที่ถูกโยนขึ้นในคอนโซล:

javascriptstudent.setName(''); // ข้อผิดพลาด
Задание 1

ในคลาส User จงสร้าง เก็ตเตอร์และเซ็ตเตอร์สำหรับอายุ

Задание 2

ในคลาส Employee จงแทนที่ เซ็ตเตอร์สำหรับอายุและเพิ่มการตรวจสอบว่า อายุอยู่ระหว่าง 18 ถึง 65 ปี