การแทนที่เมธอดของคลาสแม่ใน OOP ใน JavaScript
คลาสลูกสามารถแทนที่เมธอดของคลาสแม่ได้ โดยการสร้างเมธอดที่มีชื่อเดียวกัน ลองดูตัวอย่าง สมมติว่าเรามีคลาสแม่ดังนี้:
class User {
setName(name) {
this.name = name;
}
getName() {
return this.name;
}
}
ลองสร้างเมธอดชื่อเดียวกันในคลาสลูก:
class Student extends User {
setName(name) {
}
}
โดยทั่วไป การแทนที่เมธอดของคลาสแม่ ทำเพื่อเปลี่ยนหรือเพิ่มพฤติกรรมของเมธอดนั้น ในกรณีนี้ลองเพิ่มการตรวจสอบความยาวของชื่อ:
class Student extends User {
setName(name) {
if (name.length > 0) {
this.name = name;
} else {
throw new Error('student name error');
}
}
}
ลองมาทดสอบว่าเมธอดที่ถูกเรียกคือเมธอดที่ถูกแทนที่จริง เริ่มต้นด้วยการสร้างอ็อบเจ็กต์ของคลาสลูก:
let student = new Student;
ตอนนี้เรียกเมธอดของเรา โดยส่งค่าที่ถูกต้องเข้าไป:
student.setName('john');
จากนั้นเรียกเมธอดโดยส่งค่า ที่ไม่ถูกต้องเข้าไป ผลลัพธ์เราจะเห็นข้อผิดพลาดที่ถูกโยนขึ้นในคอนโซล:
student.setName(''); // ข้อผิดพลาด
ในคลาส User จงสร้าง
เก็ตเตอร์และเซ็ตเตอร์สำหรับอายุ
ในคลาส Employee จงแทนที่
เซ็ตเตอร์สำหรับอายุและเพิ่มการตรวจสอบว่า
อายุอยู่ระหว่าง
18 ถึง 65 ปี