Key Difference – ความแตกต่างกับการสืบทอดใน OOP
Object-Oriented Programming (OOP) มักใช้ในการพัฒนาซอฟต์แวร์ ภาษาโปรแกรมหลายภาษารองรับการเขียนโปรแกรมเชิงวัตถุ การเขียนโปรแกรมเชิงวัตถุเป็นวิธีการออกแบบโปรแกรมโดยใช้คลาสและวัตถุ คลาสใน OOP เป็นพิมพ์เขียวเพื่อสร้างวัตถุ คลาสมีคุณสมบัติและวิธีการ วัตถุคือตัวอย่างของการเรียน. OOP ประกอบด้วย 4 เสาหลัก เช่น Inheritance, Polymorphism, Abstraction และ Encapsulation บทความนี้กล่าวถึงความแตกต่างระหว่าง Polymorphism และ Inheritance ใน OOP ความแตกต่างที่สำคัญระหว่าง Polymorphism และ Inheritance ใน OOP คือ Polymorphism คือความสามารถของวัตถุในการทำงานได้หลายวิธี และการสืบทอดคือการสร้างคลาสใหม่โดยใช้คุณสมบัติและวิธีการของคลาสที่มีอยู่
Polymorphism ใน OOP คืออะไร
พหุสัณฐานคือการบ่งชี้หลายรูปแบบ วัตถุหนึ่งสามารถมีพฤติกรรมได้หลายอย่าง Polymorphism สามารถแบ่งออกเป็นสองประเภท พวกมันโอเวอร์โหลดและเอาชนะ
โอเวอร์โหลด
ดูโปรแกรมด้านล่างที่เขียนด้วยภาษาจาวา
รูปที่ 01: โอเวอร์โหลด
ตามโปรแกรมด้านบน วัตถุประเภท A จะถูกสร้างขึ้น เมื่อเรียก obj.sum(); มันจะให้ผลลัพธ์ที่เกี่ยวข้องกับวิธี sum() เมื่อเรียก obj.sum(2, 3); มันจะให้ผลลัพธ์ที่เกี่ยวข้องกับผลรวม (int a, int b) สังเกตได้ว่าวัตถุตัวเดียวกันมีพฤติกรรมที่แตกต่างกันไปตามสถานการณ์ เมื่อมีเมธอดหลายเมธอดที่มีชื่อเดียวกัน แต่มีพารามิเตอร์ต่างกันจะเรียกว่าโอเวอร์โหลดมันยังเป็นที่รู้จักกันในนามการผูกแบบคงที่หรือการรวมเวลาที่หลากหลาย
เอาชนะ
Polymorphism อีกประเภทหนึ่งกำลังเอาชนะ อ้างอิงโปรแกรมด้านล่างที่เขียนด้วยภาษาจาวา
รูปที่ 02: การเอาชนะ
ตามโปรแกรมด้านบน มี method display() ในคลาส A คลาส B ขยายจากคลาส A ดังนั้น เมธอดทั้งหมดในคลาส A สามารถเข้าถึงได้โดยคลาส B ซึ่งเป็นการสืบทอด แนวคิดการสืบทอดจะอธิบายเพิ่มเติมในภายหลัง
Class B ก็มีวิธี display() เหมือนกัน เมื่อสร้างอ็อบเจ็กต์ประเภท A และวิธีการแสดงการเรียก เอาต์พุตจะให้ B วิธีการแสดงคลาส A จะถูกแทนที่โดยวิธีการแสดงคลาส B ผลลัพธ์ที่ได้คือ B.
เมื่อมีเมธอดที่มีชื่อเหมือนกันและพารามิเตอร์เหมือนกันแต่ในสองคลาสที่ต่างกัน และพวกมันเชื่อมโยงกับการสืบทอดจะเรียกว่าการแทนที่มันยังเป็นที่รู้จักกันในนาม Late Binding, Dynamic Binding, Runtime Polymorphism การโอเวอร์โหลดและการเอาชนะเรียกว่าพหุสัณฐาน เป็นแนวคิดหลักในการเขียนโปรแกรมเชิงวัตถุ
มรดกใน OOP คืออะไร
ดูโปรแกรมด้านล่างที่เขียนด้วยภาษาจาวา
รูปที่ 03: ตัวอย่างมรดก
ตามโปรแกรมด้านบน คลาส A มี method sum() และ class B มี method sub().
วิธี sum() ของคลาส A สามารถใช้ในคลาส B ได้โดยใช้คีย์เวิร์ดขยาย การนำคุณสมบัติและเมธอดมาใช้ซ้ำในคลาสที่มีอยู่เพื่อสร้างคลาสใหม่เรียกว่าการสืบทอด แม้จะไม่มีวิธี sum() ในคลาส B; มันสืบทอดมาจากคลาส A การสืบทอดมีประโยชน์สำหรับการนำรหัสกลับมาใช้ใหม่ได้ คลาสที่เก่ากว่าเรียกว่าคลาสพื้นฐาน ซูเปอร์คลาส หรือคลาสพาเรนต์คลาสที่ได้รับเรียกว่าคลาสย่อยหรือคลาสย่อย
ประเภทของมรดก
มรดกมีหลายประเภท เป็นการสืบทอดระดับเดียว การสืบทอดหลายระดับ การสืบทอดหลายระดับ การสืบทอดตามลำดับชั้น และการสืบทอดแบบลูกผสม
มรดกเดี่ยว
ใน Single Inheritance มี super class หนึ่งคลาสและ sub class หนึ่งคลาส ถ้าคลาส A เป็นซูเปอร์คลาส และคลาส B เป็นคลาสย่อย คุณสมบัติและวิธีการทั้งหมดของคลาส A สามารถเข้าถึงได้โดยคลาส B มีเพียงระดับเดียวเท่านั้น ดังนั้นจึงเรียกว่าเป็นมรดกระดับเดียว
มรดกหลายระดับ
ในการสืบทอดหลายระดับมีสามระดับของชั้นเรียน คลาสระดับกลางสืบทอดมาจากซูเปอร์คลาส คลาสย่อยสืบทอดมาจากคลาสระดับกลาง หากมีสามคลาส A, B และ C และ A เป็นซูเปอร์คลาสและ B เป็นคลาสกลาง จากนั้น B สืบทอดจาก A และ C สืบทอดมาจาก B ซึ่งเป็นมรดกหลายระดับ
มรดกหลายตัว
ใน Multiple Inheritance มี super class มากมายและ sub class หนึ่งคลาส หากมีซูเปอร์คลาสสามคลาสที่เรียกว่า A, B, C และ D เป็นคลาสย่อย คลาส D สามารถสืบทอดจาก A, B และ C ได้ การสืบทอดหลายรายการได้รับการสนับสนุนในภาษาการเขียนโปรแกรม C++ ไม่รองรับในภาษาการเขียนโปรแกรม เช่น Java หรือ C อินเทอร์เฟซใช้สำหรับการนำการสืบทอดหลายรายการไปใช้ในภาษาเหล่านี้
การสืบทอดตามลำดับชั้น
ถ้ามีคลาสที่เรียกว่า A เป็น super class และ B, C เป็นคลาสย่อย คลาสย่อยเหล่านั้นสามารถสืบทอดคุณสมบัติและเมธอดของคลาส A ได้ ประเภทการสืบทอดประเภทนั้นเรียกว่า Hierarchical Inheritance
มรดกลูกผสม
มีการสืบทอดพิเศษอีกประเภทหนึ่งที่เรียกว่าการสืบทอดแบบไฮบริด เป็นการผสมผสานระหว่างมรดกหลายระดับและหลายระดับ หาก A, B, C และ D เป็นคลาส และ B สืบทอดจาก A และ D สืบทอดมาจากทั้ง B และ C แสดงว่าเป็นมรดกแบบไฮบริด
ความคล้ายคลึงกันระหว่างความแตกต่างและการสืบทอดใน OOP คืออะไร
ทั้งสองเป็นแนวคิดของการเขียนโปรแกรมเชิงวัตถุ
ความแตกต่างระหว่างความหลากหลายและการสืบทอดใน OOP คืออะไร
พหุสัณฐานเทียบกับการสืบทอดใน OOP |
|
รูปหลายเหลี่ยมคือความสามารถของวัตถุที่จะประพฤติตนในหลายรูปแบบ | การสืบทอดคือการสร้างคลาสใหม่โดยใช้คุณสมบัติและเมธอดของคลาสที่มีอยู่ |
การใช้งาน | |
Polymorphism ใช้สำหรับอ็อบเจ็กต์ที่จะเรียกใช้เมธอดรูปแบบใด ณ เวลาคอมไพล์และรันไทม์ | การสืบทอดใช้สำหรับโค้ดที่นำกลับมาใช้ใหม่ได้ |
การนำไปใช้ | |
Polymorphism ถูกนำมาใช้ในวิธีการ | ใช้การสืบทอดในชั้นเรียน |
หมวดหมู่ | |
พหุรูปร่างแบ่งออกได้เป็นโอเวอร์โหลดและโอเวอร์ไรด์ | การสืบทอดสามารถแบ่งออกเป็นระดับเดียว หลายระดับ ลำดับชั้น ลูกผสม และมรดกหลายชั้น |
สรุป – ความหลากหลายกับการสืบทอดใน OOP
พหุสัณฐานและการสืบทอดเป็นแนวคิดหลักในการเขียนโปรแกรมเชิงวัตถุ ความแตกต่างระหว่าง Polymorphism และ Inheritance ใน OOP คือ Polymorphism เป็นส่วนต่อประสานกับหลายรูปแบบ และ Inheritance คือการสร้างคลาสใหม่โดยใช้คุณสมบัติและเมธอดของคลาสที่มีอยู่ แนวคิดทั้งสองนี้ใช้กันอย่างแพร่หลายในการพัฒนาซอฟต์แวร์
ดาวน์โหลดไฟล์ PDF ความหลากหลายกับการสืบทอดใน OOP
คุณสามารถดาวน์โหลดไฟล์ PDF ของบทความนี้และใช้เพื่อวัตถุประสงค์ออฟไลน์ตามหมายเหตุอ้างอิง โปรดดาวน์โหลดไฟล์ PDF ที่นี่ความแตกต่างระหว่างความแตกต่างและการสืบทอดใน OOP