การเรียกใช้เมธอดที่ถูกโอเวอร์ไรด์ใน OOP ใน JavaScript
เมื่อทำการโอเวอร์ไรด์ คลาสลูกจะสูญเสีย
การเข้าถึงเมธอดของคลาสพ่อแม่ที่ถูกโอเวอร์ไรด์
อย่างไรก็ตาม การเข้าถึงเมธอดนั้นยังคงเป็นไปได้
สิ่งนี้ทำได้โดยใช้คำสำคัญ super,
ซึ่งชี้ไปยังคลาสพ่อแม่
มาดูตัวอย่างกัน เมื่อเราอาจต้องการการเข้าถึง เมธอดของคลาสพ่อแม่ สมมติว่าเรามีคลาสพ่อแม่ดังต่อไปนี้:
class User {
setName(name) {
this.name = name;
}
getName() {
return this.name;
}
}
สมมติว่าในคลาสลูก เราได้โอเวอร์ไรด์เมธอดของพ่อแม่:
class Student extends User {
setName(name) {
if (name.length > 0) {
this.name = name;
} else {
throw new Error('student name error');
}
}
}
จะสังเกตได้ว่าในเมธอดที่ถูกโอเวอร์ไรด์ เมื่อเงื่อนไขเป็นจริง รหัสที่ทำงานจริงๆ คือรหัสของเมธอดพ่อแม่ ทำให้เกิดการซ้ำซ้อนของรหัสที่ไม่จำเป็น
เราสามารถกำจัดมันได้โดยการเรียกใช้ เมธอดของพ่อแม่ มาทำกัน:
class Student extends User {
setName(name) {
if (name.length > 0) {
super.setName(name); // เมธอดของพ่อแม่
} else {
throw new Error('student name error');
}
}
}
กำหนดรหัสต่อไปนี้:
class 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 ให้แก้ไข
และลดความซับซ้อนของตัวตั้งค่าอายุ โดยใช้
เมธอดเดิมของคลาสพ่อแม่