mystou.com
การสืบทอดคลาส (inheritance) - MySTOU.com
ในมุมมองของการออกแบบคลาส การสืบทอด (inheritance) หมายถึงการที่เราสร้างคลาสหนึ่งขึ้นมาเพื่อให้คลาสอื่นๆ สืบทอดทั้งคุณสมบัติ (property) และเมธอด (method) ไปใช้งาน รวมถึงสามารถสร้างคุณสมบัติและเมธอดของตัวเองขึ้นมาเพิ่มเติมได้ตามต้องการ ยกตัวอย่างเช่น เราจะสร้างคลาสเกี่ยวกับพนักงานขึ้นมา ซึ่งในบริษัทมีพนักงานหลายแผนก แต่ละแผนกก็มีสิ่งที่เราสนใจเหมือนและแตกต่างกันดังนี้ จากภาพเราจะเห็นว่าทั้งผู้จัดการ พนักงานขาย และพนักงานฝ่ายผลิต มีข้อมูลที่คล้ายคลึงกันมาก แตกต่างแค่บางส่วนเท่านั้น เช่น ผู้จัดการมีคุณสมบัติ ที่จอดรถ พนักงานขายมีคุณสมับติ ค่าคอมมิชั่น พนักงานฝ่ายผลิต มีค่าล่วงเวลา เป็นต้น ถ้าเรานำข้อมูลนี้ไปสร้างคลาส และสร้างออบเจ็กต์จากคลาสนั้น ๆ ขึ้นมาใช้งานจริงก็ไม่มีปัญหาอะไร แต่จะดีกว่ามั้ยถ้าเราจะนำการสืบทอดมาใช้ โดยการจับกลุ่มสิ่งที่แต่ละคลาสมีเหมือนกันไปไว้ด้วยกัน แล้วเรียกมันว่า “คลาสแม่” จากนั้นก็ไปสร้างคลาสใหม่ มาสืบทอดสิ่งที่คลาสแม่มี แล้วเขียนเฉพาะสิ่งที่แตกต่างกันเอาไว้ใช้งานในคลาสของตัวเอง เราเรียกคลาสที่ไปสืบทอดคลาสอื่นว่า “คลาสลูก” หากออกแบบคลาสใหม่เราจะได้ผลลัพธ์ดังนี้ ในอนาคต หากมีแผนกใหม่เกิดขึ้น เราก็แค่สร้างคลาสใหม่ขึ้นมาสืบทอดคลาสแม่ที่เราออกแบบเอาไว้แล้ว และเขียนโค้ดเพียงนิดหน่อยก็สามารถใช้งานโปรแกรมต่อได้ นี้คือประโยชน์ของการนำกลับมาใช้ซ้ำ หรือ …