Multilevel Inheritance
สรยุทธ กรัณยพัฒนพงศ์ 650710586
Multilevel Inheritance คืออะไร?
Multilevel Inheritance เป็นการ Inheritance แบบหนึ่งที่สืบทอด Attribute, Method มาจากคลาสก่อนหน้า (เรียกว่า Base Class ก็ได้) และคลาสที่สืบทอดมาก็สืบทอดไปยังอีกคลาสอีกที (คลาสที่สืบทอดมาจะเรียก Derived Class) ซึ่ง คลาสลูกนั้นจะสามารถเข้าถึง Attribute, Method คลาสที่สืบทอดมาได้ ทำให้มีการจัดการที่มีประสิทธิภาพยิ่งขึ้นComment
ตัวอย่าง สร้างคลาสปู่ (Grandparent Class) สืบทอดไปยังคลาสพ่อ (Parent Class) จากคลาสพ่อไปคลาสลูก (Child Class) ดังรูป

ในที่นี้คลาส Grandparent จะเป็น Base Class ส่วนคลาส Parent จะสืบทอดมาจากคลาส Parent อีกที และคลาส Child ก็จะสืบทอดจากคลาส Parent มาอีกที
ตัวอย่างแรก โค้ดที่ใช้ Multilevel Inheritance ในภาษา C#
จากโค้ด จะมีคลาส Grandfather ที่มีเมธอด pray() เราจะเห็นได้ว่ามีการใช้ Inheritance ในคลาส Father (สืบทอดจากคลาส Grandfather) มีการสร้างเมธอด work() และ คลาส Son (สืบทอดจากคลาส Father) มีการสร้างเมธอด Energy() คลาส Son นั้นจะสามารถใช้เมธอด pray() และ work() ได้เพราะสืบทอดมาจากคลาส Father ส่วนคลาส Father จะสามารถใช้เมธอด pay() ได้ แต่ คลาส Grandfather ไม่สามารถใช้เมธอดอื่นได้นอกจากในคลาส Grandfather เอง
ตัวอย่างที่ 2 โค้ดที่ใช้ Multilevel Inheritance ในภาษา C#
ในตัวอย่างนี้เราได้มีการใช้ Constructor ด้วยซึ่งการสืบทอดต้องส่งสมาชิกไปหาคลาสแม่ด้วย ซึ่งในภาษา C# จะใช้ base ในการส่ง ดูได้จากคลาส Car มีการส่งพารามิเตอร์ brand กับ speed ไปหาคลาสแม่อย่าง Vehicle ส่วนคลาส ElectricCar ส่งพารามิเตอร์ brand, speed และ numberOfDoors ไปคลาสที่สืบทอดมาอีกทีนั่นเอง
ส่วนในเมธอด Main() นั้นมีการสร้าง Object มา 3 ตัวคือ Fino, Alphard และ Gte ซึ่งแต่ละ Object จะเข้าถึงเมธอดที่ตัวคลาสสืบทอดมาได้เท่านั้น คือ Gte สามารถเข้าถึงเมธอดคลาสได้ทั้งหมด เพราะสืบทอดมาจากคลาส Car (ซึ่ง Car ก็สืบทอดมาจาก Vehicle) Alphard เข้าถึงเมธอดคลาส Car กับคลาส Vehicle ส่วน Fino เข้าถึงได้แค่ในคลาสตัวเองอย่าง Vehicle เท่านั้น
ข้อดี-ข้อเสีย ของการใช้ Multilevel Inheritance
ข้อดี
การจัดการที่ดี มีการแยกโค้ดเป็นลำดับชั้นๆ
การใช้ซ้ำ สามารถนำคุณสมบัติจากคลาสที่อยู่สูงกว่ามาใช้ซ้ำได้
ข้อเสีย
แก้ไขได้ยาก ถ้ามีการสืบทอดหลายชั้น จะทำให้สับสน อาจเกิดการ error เป็น Domino ได้
เปรียบเทียบ Multi Level Inheritance ภาษา C# กับ ภาษาอื่นๆ
จากการเปรียบเทียบจะเห็นได้ว่า โครงสร้างโค้ด Multilevel Inheritance แต่ละภาษาไม่ได้ต่างกันมากนัก มีภาษา C ที่จะไม่มี Class ให้ใช้ จะใช้เป็น Struct แทนเพื่อเลียนแบบการใช้ Class ในภาษาอื่นๆ และเพื่อจำลองแบบ Inheritance เราจึงใช้การ Composition แทน
Slide Presentation
Video Presentation
อ้างอิง
Sukhpinder Singh, C# .Net. (2023, February 17). Mastering Multi-Level inheritance in C#: Building scalable and reusable code hierarchies | .Net Programming. Medium. https://medium.com/c-sharp-programming/mastering-inheritance-in-c-multi-level-inheritance-3993e8ed1833
-> เนื้อหาส่วนที่เป็น ข้อดีข้อเสียของการใช้ Multilevel Inheritance
C# Inheritance - javatpoint. (n.d.). https://www.javatpoint.com/c-sharp-inheritance
-> เนื้อหาส่วนที่เป็น ความหมายของการใช้ Multilevel Inheritance ใน C#
GeeksforGeeks. (2023, April 6). C# | Multilevel Inheritance. GeeksforGeeks. https://www.geeksforgeeks.org/c-sharp-multilevel-inheritance/
-> เนื้อหาส่วนที่เป็น ความหมายของการใช้ Multilevel Inheritance ใน C#
C# example for MultiLevel inheritance. (n.d.). https://www.tutorialspoint.com/chash-example-for-multilevel-inheritance
-> นำเนื้อหาส่วนที่เป็น Syntax การเขียน Multilevel Inheritance เบื้องต้นใน C#
Multilevel inheritance in Java. (n.d.). https://www.tutorialspoint.com/multilevel-inheritance-in-java
-> นำเนื้อหาส่วนที่เป็น Syntax การเขียน Multilevel Inheritance ใน Java
GeeksforGeeks. (2024, February 23). Multilevel inheritance in Python. GeeksforGeeks. https://www.geeksforgeeks.org/multilevel-inheritance-in-python/
-> นำเนื้อหาส่วนที่เป็น Syntax การเขียน Multilevel Inheritance ใน Python
W3Schools.com. (n.d.-b). https://www.w3schools.com/cpp/cpp_inheritance_multilevel.asp
-> นำเนื้อหาส่วนที่เป็น Syntax การเขียน Multilevel Inheritance ใน C++
Last updated