มีเนื้อหามากมายในส่วนนี้และไฟล์วิดีโอเกิน 4M ดังนั้นเวลาในการดาวน์โหลดอาจนานกว่านี้เล็กน้อย โปรดรออีกสักหน่อย!
มีเนื้อหามากมายในส่วนนี้เนื่องจากมีเนื้อหาจำนวนมาก ในมรดกเพียงอย่างเดียวฉันจึงจะใช้โอกาสนี้ฉันได้ใช้สิ่งที่ผ่านมาทั้งหมดซึ่งถือเป็นการทบทวน ฝึกฝนพวกเขา นี่คือสิ่งที่สำคัญที่สุด! - หากคุณไม่แน่ใจเกี่ยวกับเนื้อหาบทวิจารณ์ในส่วนนี้ โปรดอ่านบทที่เกี่ยวข้องก่อนหน้านี้! -
ต่อไปเราจะพูดถึงการสืบทอด เพื่อให้เข้าใจถึงการสืบทอด เราต้องรู้ก่อนว่าเหตุใดการสืบทอดจึงเป็นสิ่งจำเป็น
สมมติว่าคลาสที่เราสร้างขึ้นสำหรับระบบข่าวสารมีการเชื่อมต่อฐานข้อมูล การเริ่มต้น และฟังก์ชันต่างๆ เช่น การสืบค้น การบวก การลบ การแก้ไข ฯลฯ .!
จากนั้นเราจะต้องทำการสืบค้น ปรับเปลี่ยน ฯลฯ ที่แตกต่างกันอย่างแน่นอน ตัวอย่างเช่น คอลัมน์ข่าวสารและการจัดการผู้ใช้จำเป็นต้องใช้คลาสที่เรากล่าวถึงก่อนหน้านี้ แต่ความแตกต่างคือพวกเขาต้องการผลลัพธ์ที่แตกต่างกัน จะทำอย่างไร? มีสองวิธี หนึ่งคือการสร้างคลาสแยกกันและคัดลอกคลาสการเชื่อมต่อฐานข้อมูลสองครั้ง ฉันคิดว่าไม่จำเป็นต้องกล่าวถึงข้อเสียของสิ่งนี้ มันเกิดขึ้น รหัสของเราจะไม่ป่องมากเหรอ? คุณรู้ไหมว่าทำไมยาลดน้ำหนักถึงได้รับความนิยม?
ซึมเศร้า ควรทำอย่างไร? ง่าย ๆ เราใช้การสืบทอดเพื่อทำให้สำเร็จ เรามาอธิบายสั้น ๆ เกี่ยวกับมรดกกันดีกว่า คลาสย่อย (คลาสที่ได้รับมา) มีคุณสมบัติทั้งหมดของคลาสพาเรนต์ (คลาสพื้นฐาน) และในขณะเดียวกันก็มีลักษณะเฉพาะของตัวเอง ฉันคิดว่านี่ควรทำให้ชัดเจน!
หมายเหตุ: การสืบทอด .Net อนุญาตให้รับมรดกโดยตรงจากคลาสอื่นเท่านั้น และไม่สามารถสืบทอดหลายคลาสในเวลาเดียวกันได้ ดูเหมือนว่าจะมีพ่อเพียงคนเดียวเท่านั้น (จริงๆ แล้วนี่ไม่แน่นอน ฮ่าๆ มันน่าสนใจจริงๆ ที่คิดเกี่ยวกับ Microsoft เรายังคงสามารถใช้อินเทอร์เฟซเพื่อใช้การสืบทอดหลายรายการได้) แต่การสืบทอดแบบหลายระดับก็เป็นไปได้ ตัวอย่างเช่น อาจมีพ่อและปู่อยู่ด้านบน และลูกชายและหลานชายอยู่ที่ด้านล่าง
มาดูสิ่งที่ใช้งานง่ายกันดีกว่า:
หากเราดูภาพด้านบนเราจะพบว่าระดับล่างมีความเฉพาะเจาะจงมากขึ้น จากนั้นเราจะเข้าใจได้ว่ามนุษย์นั้นเป็นคลาสพื้นฐาน (คลาสพาเรนต์) ของคลาสทั้งหมด และคลาสต่อไปนี้คือคลาสที่ได้รับ (คลาสย่อย) ที่จริงแล้ว หมวดหมู่ย่อยต่อไปนี้ของเราสามารถขยายลงไปด้านล่างได้
ในภาษา C# คลาสที่ได้รับสืบทอดจะสืบทอดสมาชิกจากคลาสพื้นฐานโดยตรง ได้แก่ วิธีการ ฟิลด์ คุณสมบัติ เหตุการณ์ และตัวบ่งชี้ดัชนี คลาสที่ได้รับสืบทอดโดยปริยายสมาชิกทั้งหมดของคลาสฐานโดยตรงยกเว้นตัวสร้างและตัวทำลาย
2. การสืบทอดใน C# เป็นไปตามกฎต่อไปนี้:
(อันนี้ผมไม่ได้สรุปนะครับ ผมไปออนไลน์ copy มาจากคนอื่น 555!!)
1. Inheritance is Transitive. ถ้า C มาจาก B และ B มาจาก A แล้ว C ไม่เพียงสืบทอดสมาชิกที่ประกาศใน B เท่านั้น แต่ยังสืบทอดสมาชิกใน A อีกด้วย คลาส Object ทำหน้าที่เป็นคลาสพื้นฐานสำหรับทุกคลาส
2. คลาสที่ได้รับมาควรเป็นส่วนขยายของคลาสพื้นฐาน คลาสที่ได้รับสามารถเพิ่มสมาชิกใหม่ได้ แต่ไม่สามารถลบคำจำกัดความของสมาชิกที่สืบทอดมาได้
3. ตัวสร้างและตัวทำลายไม่สามารถสืบทอดได้ นอกจากนี้ สมาชิกคนอื่นๆ สามารถสืบทอดได้โดยไม่คำนึงถึงวิธีการเข้าถึงที่กำหนดไว้สำหรับสมาชิกเหล่านั้น วิธีการเข้าถึงสมาชิกในคลาสฐานสามารถกำหนดได้ว่าคลาสที่ได้รับสามารถเข้าถึงได้หรือไม่
4. หากคลาสที่ได้รับกำหนดสมาชิกใหม่ด้วยชื่อเดียวกันกับสมาชิกที่สืบทอดมา ก็สามารถเขียนทับสมาชิกที่สืบทอดมาได้ แต่นี่ไม่ได้หมายความว่าคลาสที่ได้รับได้ลบสมาชิกเหล่านี้ไปแล้ว เพียงแต่ว่าสมาชิกเหล่านี้ไม่สามารถเข้าถึงได้อีกต่อไป (ควรสังเกตว่าหากแอตทริบิวต์หรือวิธีการมีชื่อเดียวกันแต่มีลายเซ็นที่แตกต่างกัน จะไม่เป็นการเขียนทับ แต่เป็นการโอเวอร์โหลด)
5. คลาสสามารถกำหนดวิธีการเสมือน คุณลักษณะเสมือน และตัวบ่งชี้ดัชนีเสมือน และที่มาของมัน คลาสสามารถโอเวอร์โหลดสมาชิกเหล่านี้ได้ ดังนั้นคลาสที่นำไปใช้สามารถแสดงความหลากหลายได้
6. คลาสที่สืบทอดสามารถสืบทอดจากคลาสเดียวเท่านั้น และการสืบทอดหลายรายการสามารถทำได้ผ่านอินเทอร์เฟซ
ในคลาสย่อย เราสามารถเข้าถึงสมาชิกของคลาสฐานได้โดยใช้คีย์เวิร์ด base:
วิธีการโทรบนคลาสฐานที่ถูกแทนที่โดยวิธีอื่น
ระบุตัวสร้างคลาสพื้นฐานที่ควรถูกเรียกเมื่อสร้างอินสแตนซ์ของคลาสที่ได้รับ
การเข้าถึงคลาสฐานสามารถทำได้ในตัวสร้าง วิธีการอินสแตนซ์ หรือตัวเข้าถึงคุณสมบัติอินสแตนซ์เท่านั้น
มีข้อผิดพลาดในการใช้คีย์เวิร์ดฐานจากวิธีคงที่
การเยี่ยมชมตัวแก้ไขการเข้าถึงอีกครั้ง
ตัวแก้ไขการเข้าถึงคือคำสำคัญที่ระบุความสามารถในการเข้าถึงของสมาชิกหรือประเภทที่ประกาศไว้ มีตัวดัดแปลงการเข้าถึงสี่ตัวในการสืบทอดคลาส: สาธารณะ ป้องกันภายใน ส่วนตัว ใช้ตัวแก้ไขการเข้าถึงเหล่านี้เพื่อระบุระดับการเข้าถึงห้าระดับต่อไปนี้: สาธารณะ ได้รับการป้องกัน ภายใน ภายใน ได้รับการป้องกัน ส่วนตัว
ความหมายการเข้าถึงที่ประกาศ
การเข้าถึงสาธารณะไม่จำกัด
การเข้าถึงที่ได้รับการป้องกันนั้นจำกัดอยู่ที่คลาสที่มีหรือประเภทที่ได้มาจากคลาสที่มี
การเข้าถึงภายในถูกจำกัดไว้สำหรับโปรเจ็กต์ปัจจุบัน
การเข้าถึงภายในที่ได้รับการป้องกันนั้น จำกัด อยู่ที่รายการหรือประเภทปัจจุบันที่ได้มาจากคลาสที่มีอยู่
การเข้าถึงแบบส่วนตัวถูกจำกัดไว้เฉพาะประเภทที่มี
มาดูตัวอย่างด้านล่างกันดีกว่า
มาดูคอมเมนต์ของโค้ดทั้งหมดกันดีกว่า!!