Hybrid Inheritance ใน C ++ คืออะไร? เป็นแบบอย่างพร้อมตัวอย่าง

เผยแพร่แล้ว: 2021-05-27

เรามักใช้คำว่า "การสืบทอด" ในบริบทของการเขียนโปรแกรม เป็นคุณลักษณะที่ได้รับการฝึกฝนในการเขียนโปรแกรมเพื่อนำรหัสกลับมาใช้ใหม่ได้ดีที่สุด หากคุณจำแนวคิดของ “IS-A” ใน OOP (Object Oriented Programming) ได้ คุณจะพบว่าแนวคิดนั้นอิงตามคุณสมบัติการสืบทอด การใช้การสืบทอดจะช่วยให้คุณได้รับ แนวคิดโครงการ ขั้นสูง ใน C ++

สารบัญ

มรดกคืออะไร?

ในกระบวนการสืบทอด วัตถุของคลาสหนึ่งจะได้รับคุณสมบัติและพฤติกรรมของคลาสอื่น ที่นี่คลาสใหม่ได้มาจากคลาสฐานที่มีอยู่ คลาสสมาชิกที่ได้รับมักจะเรียกว่าคลาสลูกและสมาชิกคลาสพื้นฐานของคลาสหลัก หลังจากได้รับคลาสลูกแล้ว จะสืบทอดคุณสมบัติและวิธีการทั้งหมดจากคลาสพาเรนต์

นอกจากนี้ คลาสย่อยสามารถมีคุณสมบัติและวิธีการพิเศษเฉพาะสำหรับวัตถุประสงค์ คุณลักษณะเพิ่มเติมที่เพิ่มในเครื่องให้กับคลาสที่มีอยู่จะไม่ส่งผลต่อคุณสมบัติที่สืบทอดมาจากคลาสหลัก ดังนั้นคลาสใหม่จะรวมคุณสมบัติของทั้งสองคลาสเข้าด้วยกัน

การสืบทอดใน C++

บ่อยครั้ง ในความเป็นจริง โปรแกรมเมอร์จำเป็นต้องพัฒนาวัตถุที่ต้อง:
1) มีคุณสมบัติครบถ้วนของผู้ปกครองและนอกจากนี้
2) ในบางแง่มุม ความพากเพียรเป็นพิเศษ

การเข้ารหัสคุณสมบัติพิเศษดังกล่าวในคลาสหลักอาจไม่จำเป็นในทางปฏิบัติและประหยัด ในกรณีนั้น คลาสใหม่จะได้มาจากการขยายคลาสฐาน นอกจากนี้ยังได้มาจากคลาสอื่นที่มีคุณสมบัติเพิ่มเติมอีกด้วย ในลักษณะนี้ คุณสามารถใช้ซ้ำ ขยาย หรือแก้ไขแอตทริบิวต์และลักษณะการทำงานที่กำหนดไว้ในคลาสอื่น ดังนั้นคลาสลูกที่ได้มาจากหลายคลาสทำให้วัตถุที่ง่ายต่อการบำรุงรักษาและพอร์ต คลาสที่ได้รับคือคลาสเฉพาะสำหรับคลาสฐาน

ในทางเทคนิค คำหลัก "ขยาย" ใช้เพื่อสืบทอดคลาส C++ ใช้เครื่องหมายโคลอน (“ : ”) เพื่อสืบทอดจากคลาส

ประเภทของมรดก

การใช้มรดกร่วมกันและการนำไปใช้จะแตกต่างกันไปตามวัตถุประสงค์ของคลาสที่ได้รับ มีการสืบทอดหลายประเภทใน C ++ ตามรายการด้านล่าง:

  • การ สืบทอดเดี่ยว เป็นที่ที่คลาสที่ได้รับสืบทอดคุณสมบัติและพฤติกรรมจากคลาสฐานเดียว ตัวอย่าง: คลาส A → คลาส B.
  • การ สืบทอดตามลำดับชั้น เป็นที่ที่มีการสร้างคลาสที่ได้รับมากกว่าหนึ่งคลาสจากคลาสฐานเดียว ตัวอย่าง: คลาส A → คลาส B → คลาส C
  • Multiple Inheritance ใช้สำหรับรับคลาสจากคลาสฐานหลายคลาส ที่นี่ อ็อบเจ็กต์ลูกที่โปรแกรมเมอร์สร้างขึ้นจะมีลักษณะและคุณลักษณะที่ผสมผสานกันจากคลาสพาเรนต์หลายคลาส ออบเจ็กต์เหล่านี้เป็นไปตามลำดับชั้นของคลาสพื้นฐาน
  • การสืบทอดหลายระดับ เป็นที่ที่คลาสย่อยได้มาจากคลาสที่ได้รับอื่น คุณลักษณะนี้มีแง่มุมที่รวมกันของหลายคลาสและเป็นไปตามลำดับชั้น
  • การ สืบทอดแบบไฮบริด เป็นคุณลักษณะที่แตกต่างกันของการใช้การสืบทอดหลายรายการ ที่นี่คลาสย่อยได้มาจากการสืบทอดแบบเดี่ยว ลำดับชั้น และหลายระดับรวมกันตั้งแต่หนึ่งชุดขึ้นไป มรดกนี้ใช้สำหรับโปรแกรมที่ผสมผสานการสืบทอดประเภทต่างๆ ตัวอย่างเช่น เมื่อผสมการสืบทอดเดี่ยวกับการสืบทอดหลายรายการ หรืออาจเป็นสถานการณ์ที่การสืบทอดหลายรายการรวมกันภายในโปรแกรมเดียว

ตัวอย่างง่ายๆ

ที่นี่ทั้งคลาส B และคลาส C มาจากคลาสพื้นฐาน คลาส A

การจำแนกตามลำดับชั้นของรถยนต์แสดงสองคลาส ทั้ง "รถยนต์เบนซิน" และ "รถยนต์ไฟฟ้า" มาจาก "รถยนต์ประเภทพื้นฐาน"

การสืบทอดไฮบริดใน C ++

อาจมีบางสถานการณ์ที่เราต้องใช้มรดกสองประเภทขึ้นไปรวมกันเพื่อออกแบบโปรแกรม เมื่อโปรแกรมเกี่ยวข้องกับการสืบทอดมากกว่าหนึ่งประเภท เรียกว่า Hybrid Inheritance

การ สืบทอดแบบไฮบริด คือการรวมกันของการสืบทอดแบบธรรมดา การสืบทอดหลายรายการ และการสืบทอดแบบลำดับชั้น โดยปกติ ในการสืบทอดหลาย ๆ คลาส คลาสจะได้รับมาจากสองคลาส โดยที่หนึ่งในคลาสพาเรนต์เป็นคลาสที่ได้รับเช่นกัน ไม่ใช่คลาสฐาน

การ สืบทอดแบบไฮบริดใน C ++ เป็นการสืบทอดที่คลาสได้มาจากรูปแบบหรือการรวมกันของการสืบทอดใด ๆ มากกว่าหนึ่งรูปแบบ การ สืบทอดแบบไฮบริดใน C ++ เรียกอีกอย่างว่าการสืบทอด multipath โดยที่คลาสที่ได้รับหนึ่งคลาสสามารถสืบทอดคุณสมบัติของคลาสฐานในพา ธ ที่ต่างกัน บางครั้งเรียกว่ามรดกหลายทาง ตัวอย่างเช่น สามารถทำได้ด้วยการสืบทอดทั้งแบบหลายระดับและแบบลำดับชั้น

กล่าวโดยย่อ มรดกลูกผสมคือการรวมกันของมรดกสองประเภทขึ้นไป ตัวอย่างเช่น โดยการนำการสืบทอดแบบเดี่ยวและหลายระดับไปใช้ในโปรแกรมเดียวกัน

บล็อกไดอะแกรมของการสืบทอดไฮบริด

ไดอะแกรมแสดงถึงการผสมแบบผสมของมรดกสองชุด มรดกเดียวและหลายมรดก ในที่นี้ ในการสืบทอดเดี่ยว คลาส B ได้ มา จากคลาส A ในทำนองเดียวกัน ในการสืบทอดหลายรายการ คลาส D จะสืบทอดมาจากหลายคลาส ในที่นี้ คลาส B และคลาส C ดังนั้น การผสมผสานระหว่างมรดกเดี่ยวและการสืบทอดหลายชุดจึงทำให้เกิดการสืบทอดแบบลูกผสม

การสืบทอดแบบไฮบริดสามารถใช้ได้ในสถานการณ์ที่เราจำเป็นต้องใช้การสืบทอดมากกว่าหนึ่งรายการในโปรแกรม

ไวยากรณ์ของการสืบทอดไฮบริดใน C ++

ไวยากรณ์และความหมายทั่วไปสำหรับการ สืบทอดแบบไฮบริดใน C++ จะเป็นไปตามที่แสดงด้านล่าง:

ตัวอย่างของการสืบทอดไฮบริดใน C ++

ตัวอย่างที่ 1: มรดกเดี่ยว + หลายรายการ

เรามาดูกันว่าการสืบทอดแบบเดี่ยวและแบบหลายรายการมีการใช้งานอย่างไร

แต่ละบล็อกในไดอะแกรมนี้แสดงถึงคลาส และลูกศรที่สอดคล้องกันคือการสืบทอดของคลาส

ตัวอย่างที่ 2: มรดกเดี่ยว + หลายระดับ

นอกจากนี้เรายังสามารถใช้การสืบทอดประเภทอื่นเพื่อสร้างการสืบทอดแบบลูกผสม

ลองพิจารณาตัวอย่าง เรียลไท ม์

เราได้มาจากคลาสย่อยของรถยนต์จากคลาส Vehicle อีกชั้นหนึ่งมีลักษณะการแข่งรถ เมื่อเราได้รับเอนทิตีสุดท้าย ทั้งจากคลาสรถยนต์และคลาสเรซซิ่ง จะให้ผลลัพธ์ที่รวมกัน อนุพันธ์นี้คือ Ferrari – รถแข่ง

นี่คือโปรแกรมง่ายๆ ที่แสดงให้เห็นแนวคิดของการ สืบทอดไฮบริดใน C ++

รหัสตัวอย่าง

ผลลัพธ์

เรียนรู้ หลักสูตรการพัฒนาซอฟต์แวร์ออนไลน์ จากมหาวิทยาลัยชั้นนำของโลก รับโปรแกรม PG สำหรับผู้บริหาร โปรแกรมประกาศนียบัตรขั้นสูง หรือโปรแกรมปริญญาโท เพื่อติดตามอาชีพของคุณอย่างรวดเร็ว

บทสรุป

หวังว่าบทความนี้จะช่วยให้คุณเข้าใจแนวคิดและประเภทของ Hybrid Inheritance ใน C ++ นักเรียนที่อยู่ในกระแส คอมพิวเตอร์ และโปรแกรมที่เกี่ยวข้องกับคอมพิวเตอร์สามารถพัฒนาทักษะและความน่าเชื่อถือทางเทคนิคได้ เช่น แนวคิด OOP upGrad จัดหาทรัพยากรและฐานความรู้เพื่อ ส่งเสริมให้ผู้เชี่ยวชาญดังกล่าวมีความเชี่ยวชาญในการเขียนโปรแกรมและแข่งขันในตลาดอุตสาหกรรม ที่ upGrad คุณยังได้รับโอกาสในการสำรวจเครือข่ายมืออาชีพและการพัฒนาทักษะอีกด้วย

เราหวังว่าคุณจะมีโอกาสเรียนรู้ที่ยอดเยี่ยมในการดำเนินโครงการ C++ เหล่านี้ หากคุณสนใจที่จะเรียนรู้เพิ่มเติมและต้องการคำปรึกษาจากผู้เชี่ยวชาญในอุตสาหกรรม โปรดดู โปรแกรม PG สำหรับผู้บริหารระดับสูงของ Grad & IIIT Banglore ในการพัฒนาซอฟต์แวร์ฟูลส แตก

การสืบทอดในการเขียนโปรแกรมเชิงวัตถุคืออะไร?

การสืบทอดเป็นกลไกของการนำรหัสกลับมาใช้ใหม่และช่วยในการจำลองโลกแห่งความเป็นจริง มันขยายแนวคิดของการแยกข้อมูลใน OOP เป็นกระบวนการที่คลาสได้รับคุณสมบัติของคลาสอื่น เป็นพื้นฐานใน OOP ที่คลาสสามารถกำหนดได้ในแง่ของคลาสอื่นเท่านั้น นี่เป็นเพราะแนวคิดเรื่องนามธรรม การสืบทอดเป็นกลไกที่สร้างคลาสอ็อบเจ็กต์ใหม่ในลำดับชั้นคลาสเดียวกันกับอ็อบเจ็กต์อื่น ประโยชน์หลักของการสืบทอดคือการใช้รหัสซ้ำ เป็นวิธีการนำรหัสกลับมาใช้ใหม่ หากคุณมีชั้นเรียนและทำงานเฉพาะ คุณสามารถใช้ชั้นเรียนนั้นกับงานอื่นได้เช่นกัน แค่พูดว่า รถยนต์และรถบรรทุกทำงานเหมือนกัน คุณจึงสามารถใช้รหัสเดียวกันเพื่อขับมันได้

3 ขอบเขตของการสืบทอดใน C ++ คืออะไร?

ขอบเขตของการสืบทอดใน C ++ เป็นส่วนตัว มีการป้องกันและเป็นสาธารณะ การสืบทอดส่วนตัวเป็นที่ที่คลาสหนึ่งสืบทอดมาจากคลาสอื่น แต่คลาสที่ได้รับไม่สามารถเข้าถึงได้นอกคลาส การสืบทอดประเภทนี้สามารถใช้ได้เมื่อคลาสฐานไม่ได้ถูกกำหนดให้เข้าถึงภายนอกคลาสเท่านั้น การสืบทอดที่มีการป้องกันจะใช้เมื่อคลาสฐานไม่ได้หมายถึงการเข้าถึงภายนอกคลาส และมีไว้สำหรับการเข้าถึงภายนอกคลาส การสืบทอดสาธารณะจะใช้เมื่อคลาสฐานมีขึ้นเพื่อเข้าถึงภายนอกคลาส

การสืบทอดหลายรายการใน C ++ คืออะไร

การสืบทอดหลายรายการคือความสามารถในการสืบทอดคลาสจากคลาสมากกว่าหนึ่งคลาส คุณลักษณะนี้ไม่พร้อมใช้งานใน C นี่เป็นหนึ่งในคุณลักษณะที่สำคัญที่สุดของ C++ ที่สนับสนุนการเขียนโปรแกรมเชิงวัตถุ การใช้การสืบทอดหลายรายการใน C ++ ขึ้นอยู่กับแนวคิดของคลาสการสืบทอด การสืบทอดหลายรายการเป็นกลไกที่สนับสนุนโมเดลการเขียนโปรแกรมเชิงวัตถุที่สามารถใช้เพื่อแก้ปัญหาบางอย่างได้ เช่น การใช้ซ้ำตามพฤติกรรมและการใช้รหัสซ้ำ การใช้รหัสซ้ำเป็นปัญหาใน C ++ เสมอ เนื่องจาก C++ มีการสนับสนุนการสืบทอดเพียงครั้งเดียวเท่านั้น การสืบทอดหลายรายการทำได้โดยการรวมอินเทอร์เฟซหลายรายการไว้ในวัตถุ