C # มรดก
เป็นมรดกเขียนโปรแกรมเชิงวัตถุเป็นหนึ่งในแนวคิดที่สำคัญที่สุด มรดกช่วยให้เราสามารถกำหนดระดับที่ขึ้นอยู่กับชั้นอื่นจะกำหนดระดับซึ่งจะทำให้การสร้างและการใช้งานการบำรุงรักษาง่ายมาก แต่ยังเอื้อต่อนำมาใช้ใหม่รหัสและลดเวลาในการพัฒนา
เมื่อคุณสร้างชั้นโปรแกรมเมอร์ไม่จำเป็นต้องสมบูรณ์อีกครั้งเขียนข้อมูลสมาชิกและฟังก์ชั่นสมาชิกใหม่คุณเพียงต้องการที่จะออกแบบคลาสใหม่ที่สืบทอดสมาชิกที่มีอยู่ของชั้นเรียนสามารถชั้นฐานที่มีอยู่จะเรียกว่าชั้นเรียนชั้นใหม่ที่เรียกว่าชั้นเรียนมา
สำนึกของความคิดของมรดกที่อยู่ (IS-A) ความสัมพันธ์ยกตัวอย่างเช่นการเลี้ยงลูกด้วยนมเป็น (IS-A) สัตว์,สุนัขที่อยู่ (IS-A)เลี้ยงลูกด้วยนมและดังนั้นจึงเป็นสุนัข (IS-A) สัตว์
ฐานและชั้นเรียนมา
ชั้นจะได้รับจากระดับมากกว่าหนึ่งหรืออินเตอร์เฟซซึ่งหมายความว่ามันสามารถสืบทอดฐานเรียนหลายหรือการเชื่อมต่อจากข้อมูลและฟังก์ชั่น
สร้างคลาสที่ได้รับใน C # ไวยากรณ์เป็นดังนี้:
<Acess-ระบุ> ระดับ <base_class> { ... } ระดับ <derived_class>: <base_class> { ... }
สมมติว่ามีรูปร่างชั้นฐานซึ่งเป็นสี่เหลี่ยมผืนผ้าคลาสที่ได้รับ:
การใช้ระบบ InheritanceApplication namespace { รูปร่างระดับ { โมฆะสาธารณะ setWidth (int W) { width = W; } โมฆะสาธารณะ setHeight (int เอช) { height = เอช; } การป้องกันความกว้าง int; การป้องกันความสูง int; } // ระดับชั้นเรียนมาสี่เหลี่ยมผืนผ้าทรง { int สาธารณะ getArea () { กลับ (กว้าง * สูง); } } ระดับ RectangleTester { เป็นโมฆะคง main (String args []) { ดูแลรักษา Rectangle = สี่เหลี่ยมผืนผ้าใหม่ (); Rect.setWidth (5) (7) Rect.setHeight; // พิมพ์พื้นที่ของวัตถุ Console.WriteLine ( "พื้นที่ทั้งหมด: {0}" Rect.getArea ()); Console.ReadKey (); } } }
เมื่อโค้ดข้างต้นจะรวบรวมและดำเนินการก็จะก่อให้เกิดผลลัพธ์ต่อไปนี้:
พื้นที่ทั้งหมด: 35
เริ่มต้นชั้นฐาน
คลาสที่ได้รับสืบทอดตัวแปรสมาชิกและวิธีการสมาชิกของชั้นฐาน ดังนั้นวัตถุแม่ควรได้รับการสร้างขึ้นก่อนวัตถุชั้นย่อยที่ถูกสร้างขึ้น คุณสามารถเริ่มต้นระดับผู้ปกครองที่อยู่ในรายชื่อสมาชิกเริ่มต้น
โปรแกรมต่อไปนี้แสดงให้เห็นถึงจุดนี้:
การใช้ระบบ RectangleApplication namespace { ระดับสี่เหลี่ยมผืนผ้า { // ตัวแปรสมาชิกที่มีการป้องกันความยาวคู่ การป้องกันความกว้างคู่ สี่เหลี่ยมผืนผ้าสาธารณะ (L คู่คู่ W) { ความยาว = l; width = W; } GetArea คู่สาธารณะ () { กลับความยาวความกว้าง *; } โมฆะสาธารณะจอแสดงผล () { Console.WriteLine ( "ความยาว: {0}", ความยาว); Console.WriteLine ( "width: {0}" กว้าง); Console.WriteLine ( "ขนาด: {0}" GetArea ()); } } // สี่เหลี่ยมผืนผ้าระดับ End โต๊ะระดับ: สี่เหลี่ยมผืนผ้า { ค่าใช้จ่ายส่วนตัวคู่; โต๊ะสาธารณะ (L คู่คู่ W): ฐาน (L, W) {} GetCost คู่สาธารณะ () { ค่าใช้จ่ายคู่ ค่าใช้จ่าย = GetArea () * 70; กลับค่าใช้จ่าย; } โมฆะสาธารณะจอแสดงผล () { base.Display (); Console.WriteLine ( "ค่าใช้จ่าย: {0}" GetCost ()); } } ระดับ ExecuteRectangle { เป็นโมฆะคง main (String args []) { โต๊ะ t = โต๊ะใหม่ (4.5, 7.5); t.Display (); Console.ReadLine (); } } }
เมื่อโค้ดข้างต้นจะรวบรวมและดำเนินการก็จะก่อให้เกิดผลลัพธ์ต่อไปนี้:
ความยาว: 4.5 ความกว้าง: 7.5 พื้นที่: 33.75 ค่าใช้จ่าย: 2,362.5
C # มรดกหลาย
C # ไม่สนับสนุนมรดกหลายอย่างไรก็ตามคุณสามารถใช้อินเตอร์เฟซเพื่อให้บรรลุมรดกหลาย โปรแกรมต่อไปนี้แสดงให้เห็นถึงจุดนี้:
การใช้ระบบ InheritanceApplication namespace { รูปร่างระดับ { โมฆะสาธารณะ setWidth (int W) { width = W; } โมฆะสาธารณะ setHeight (int เอช) { height = เอช; } การป้องกันความกว้าง int; การป้องกันความสูง int; } // PaintCost ระดับฐาน PaintCost อินเตอร์เฟซที่สาธารณะ { int getCost (พื้นที่ int); } // ระดับชั้นเรียนมาสี่เหลี่ยมผืนผ้า: รูปร่าง PaintCost { int สาธารณะ getArea () { กลับ (กว้าง * สูง); } int สาธารณะ getCost (int พื้นที่) { พื้นที่ผลตอบแทน * 70; } } ระดับ RectangleTester { เป็นโมฆะคง main (String args []) { ดูแลรักษา Rectangle = สี่เหลี่ยมผืนผ้าใหม่ (); พื้นที่ int; Rect.setWidth (5) (7) Rect.setHeight; พื้นที่ = Rect.getArea (); // พิมพ์พื้นที่ของวัตถุ Console.WriteLine ( "พื้นที่ทั้งหมด: {0}" Rect.getArea ()); Console.WriteLine ( "สีค่าใช้จ่ายทั้งหมด: $ {0}" Rect.getCost (พื้นที่)); Console.ReadKey (); } } }
เมื่อโค้ดข้างต้นจะรวบรวมและดำเนินการก็จะก่อให้เกิดผลลัพธ์ต่อไปนี้:
พื้นที่ทั้งหมด: 35 สีค่าใช้จ่ายทั้งหมด: $ 2,450