ตัวสร้างเมื่อมีการสืบทอดใน OOP ใน JavaScript
เมื่อมีการสืบทอด คุณสามารถเขียนทับ ตัวสร้างของคลาสแม่ได้ ลองดูตัวอย่าง สมมติว่าเรามีคลาสแม่ดังต่อไปนี้:
class User {
constructor(name, surn) {
this.name = name;
this.surn = surn;
}
getName() {
return this.name;
}
getSurn() {
return this.surn;
}
}
สมมติว่าคลาสลูกสืบทอดจากคลาสแม่ดังนี้:
class Student extends User {
}
สมมติว่าเราต้องการขยายตัวสร้างในคลาสลูก โดยเพิ่มพารามิเตอร์เพิ่มเติมเข้าไป:
class Student extends User {
constructor(name, surn, year) {
}
}
ในกรณีนี้เราจำเป็นต้องเรียกตัวสร้าง
ของคลาสแม่ผ่านคำสั่ง super
เป็นบรรทัดแรก:
class Student extends User {
constructor(name, surn, year) {
super();
}
}
คำสั่ง super ในสาระสำคัญคือ
ตัวสร้างของคลาสแม่ ดังนั้น
ให้ส่งพารามิเตอร์ที่ต้องการไปให้มัน:
class Student extends User {
constructor(name, surn, year) {
super(name, surn);
}
}
ตอนนี้ในคลาสลูก ให้บันทึกปีการศึกษา ลงในคุณสมบัติของตัวคลาสลูกเอง:
class Student extends User {
constructor(name, surn, year) {
super(name, surn);
this.year = year;
}
}
มาสร้างเก็ตเตอร์สำหรับปีการศึกษากัน:
class Student extends User {
constructor(name, surn, year) {
super(name, surn);
this.year = year;
}
getYear() {
return this.year;
}
}
ให้คลาส Employee สืบทอด
จากคลาส User จากบทเรียนนี้
เขียนทับตัวสร้างของคลาสแม่ในคลาส Employee
โดยเพิ่มพารามิเตอร์อายุและเงินเดือนเข้าไป
สร้างเก็ตเตอร์สำหรับอายุและ เงินเดือน