เมธอดนามธรรมใน OOP ใน TypeScript
บางครั้งคลาสลูกต้องมีเมธอดร่วมกัน แต่การนำเมธอดนั้นไปใช้งานขึ้นอยู่กับคลาสลูกเฉพาะ ในกรณีนี้สามารถประกาศเมธอดนั้นในคลาสแม่ที่เป็นนามธรรมได้ โดยไม่ต้องเขียนการนำไปใช้งาน จากนั้นคลาสลูกจะต้องทำการนำเมธอดเหล่านี้ไปใช้งาน เมธอดดังกล่าวเรียกว่า เมธอดนามธรรม และยังประกาศโดยใช้คำสั่ง abstract
ตัวอย่างเช่น ลองใช้คลาสนามธรรมของเรา User ให้คลาสลูกของคลาสนี้ต้องมีเมธอด show ที่แสดงข้อมูลของอ็อบเจกต์
อย่างไรก็ตาม การนำเมธอดนี้ไปใช้งานจะขึ้นอยู่กับคลาสลูก ลองประกาศเมธอดนี้เป็นนามธรรมในคลาส User:
abstract class User {
public name: string;
constructor(name: string) {
this.name = name;
}
public abstract show(): string;
}
นำเมธอดนี้ไปใช้งานในคลาสลูก Student:
class Student extends User {
public course: number;
constructor(name: string, course: number) {
super(name);
this.course = course;
}
show() {
return this.name + ' ' + this.course;
}
}
นำเมธอดนี้ไปใช้งานในคลาสลูก Employee:
class Employee extends User {
public salary: number;
constructor(name: string, salary: number) {
super(name);
this.salary = salary;
}
show() {
return this.name + ' ' + this.salary;
}
}
ในคลาสนามธรรม Figure สร้างเมธอดนามธรรมสำหรับรับพื้นที่และเส้นรอบรูป
ในคลาสลูก Square และ Rectangle เขียนการนำเมธอดเหล่านี้ไปใช้งาน