มรดกและการสืบทอด
หากคุณได้ยินชื่อนี้เป็นครั้งแรกคุณควรคิดถึงความหมายของสองคำนี้ก่อน เรามาพูดถึงมรดกกันก่อน สิ่งนี้คล้ายกับความหมายของมรดกในชีวิตจริง เช่น คนหนึ่งสืบทอดทรัพย์สินของอีกคนหนึ่ง และลูกชายสืบทอดมรดกของบิดาของเขา ในทำนองเดียวกัน ใน C++ ตัวอย่างเช่น หากมีสองคลาส คลาสใหม่จะมีแอ็ตทริบิวต์ทั้งหมดของคลาสดั้งเดิม ซึ่งเรียกว่า inheritance ! กระบวนการสร้างคลาสใหม่จากคลาสดั้งเดิมเรียกว่า derivation ! และเราเรียกคลาสดั้งเดิม ว่าคลาสแม่ หรือ คลาสพื้นฐาน และคลาสที่ได้รับมาจากคลาสพื้นฐานเรียกว่าคลาสที่ได้รับหรือ คลาสย่อย ทุกคนสามารถบอกความสัมพันธ์ของพวกเขาได้จากชื่อของพวกเขา
แล้วมรดกและการสืบทอดมีประโยชน์อย่างไร? เหตุใด C ++ จึงมีกลไกนี้
1. สะท้อนแนวคิดการเขียนโปรแกรมเชิงวัตถุและแสดงความสัมพันธ์ระหว่างประเภทต่างๆ ได้ดียิ่งขึ้น
2. นอกเหนือจากการสืบทอดข้อมูลทั้งหมดของคลาสพื้นฐานแล้ว คลาสที่ได้รับยังสามารถเพิ่มข้อมูลที่แตกต่างและแตกต่างของตัวเองได้ เช่นเดียวกับหลักการของวิวัฒนาการทางชีววิทยา คลาสที่ได้รับจะอัปเดตบนพื้นฐานของการมีข้อมูลทั้งหมดของ คลาสพื้นฐานที่ทรงพลัง
3. สมาชิกที่สืบทอดมาจากคลาสที่ได้รับมาจนถึงคลาสพื้นฐานนั้นจะถูกเป็นเจ้าของโดยอัตโนมัติและซ่อนเร้น นั่นคือเราไม่จำเป็นต้องกำหนดมันใหม่ สิ่งนี้ช่วยประหยัดโค้ดได้จำนวนมากและรวบรวมแนวคิดทางวิศวกรรมซอฟต์แวร์ของการใช้โค้ดซ้ำ
ต่อไป มาดูการใช้งานโค้ดจริง วิธีสืบทอดและใช้งานคลาสที่ได้รับ:
/************************************//Des: การสาธิตการสอน C++//Author: Huang/ /ลิขสิทธิ์:www.dotcpp.com//วันที่:2018/6/20********************************* * *******/#รวม ude<iostream>usingnamespacestd;classClock{private:intH;intM;intS;public:intSetTime(inth,intm,ints){this->H=h;this->M=m;this->S=s;return0; }intShowTime(){co ut <<ตอนนี้:<<H<<:<<M<<:<<S<<endl;return0;}};classAlarmClock:publicClock{private:intAH;intAM;public:intSetAlarm(intAH,intAM){this- >AH=AH;นี่->AM=AM;return0;} intShowAlarm(){cout<<AlarmTime:<<AH<<:<<AM<<endl;return0;}};intmain(){AlarmClockA;A.SetTime(19,15,50);A.ShowTime(); A.SetAlarm(5,30);A.ShowAlarm();return0;}
ภาพหน้าจอที่รันอยู่มีดังนี้:
โปรดอ่านและทำความเข้าใจโค้ด Clock เป็นคลาสพื้นฐานและ AlarmClock เป็นคลาสที่ได้รับ โปรดใส่ใจกับคำสั่งที่กำหนดคลาสที่ได้รับ:
classAlarmClock:publicClock
การสืบทอดจะแสดงด้วยเครื่องหมายทวิภาค โดยที่สาธารณะแสดงถึงมรดกสาธารณะ มรดกส่วนบุคคล และมรดกที่ได้รับการคุ้มครอง ซึ่งเราจะอธิบายเพิ่มเติมในภายหลัง ในโค้ด เรากำหนดอ็อบเจ็กต์ A ของคลาส AlarmClock ที่ได้รับในฟังก์ชันหลัก จากนั้นเราสามารถเรียกใช้เมธอด SetTime และ ShowTime จากคลาสพื้นฐานและใช้พวกมันเหมือนกับของเราเอง ในเวลาเดียวกัน เราได้เพิ่มและกำหนดวิธี SetAlarm และ ShowAlarm ของเราเองในคลาสที่ได้รับ โปรดเข้าใจโค้ดและทดลองบนคอมพิวเตอร์
จนถึงตอนนี้ เราได้แนะนำแนวคิดพื้นฐานของการสืบทอดและการสืบทอด หลังจากทำความเข้าใจสิ่งนี้แล้ว คุณต้องทดลองด้วยการเขียนโค้ดบนคอมพิวเตอร์เพื่อทำความเข้าใจภายใต้สถานการณ์ใดที่คลาสสองคลาสที่มีความเหมือนกันและเกี่ยวข้องกันสามารถมีความสัมพันธ์ประเภทนี้ และชั่งน้ำหนักได้ ใช้.