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++ มีการสนับสนุนการสืบทอดเพียงครั้งเดียวเท่านั้น การสืบทอดหลายรายการทำได้โดยการรวมอินเทอร์เฟซหลายรายการไว้ในวัตถุ