เหตุใดการสืบทอดหลายรายการจึงไม่สามารถทำได้ใน C #
เหตุใดการสืบทอดหลายรายการจึงไม่สามารถทำได้ใน C #

วีดีโอ: เหตุใดการสืบทอดหลายรายการจึงไม่สามารถทำได้ใน C #

วีดีโอ: เหตุใดการสืบทอดหลายรายการจึงไม่สามารถทำได้ใน C #
วีดีโอ: สองใจ | NOT'TOY | The Rapper 2021 2024, อาจ
Anonim

C# ไม่ ไม่ สนับสนุน หลายมรดก เพราะพวกเขาให้เหตุผลว่าการเพิ่ม หลายมรดก เพิ่มความซับซ้อนมากเกินไปใน C # ในขณะที่ให้ประโยชน์น้อยเกินไป ใน C# มีคลาสเท่านั้น อนุญาต ถึง สืบทอด จากคลาสผู้ปกครองเดี่ยวซึ่งเรียกว่า single มรดก.

เหตุใดจึงไม่อนุญาตให้มีการสืบทอดหลายรายการ

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

อาจมีคนถามว่าเราสามารถสืบทอดหลายอินเตอร์เฟสใน C # ได้หรือไม่? อินเทอร์เฟซ เป็นเหมือนข้อตกลงหรือ "สัญญา" เกี่ยวกับสิ่งที่ชั้น ทำได้ . ชั้นเรียน สามารถ มี หลายอินเตอร์เฟส แต่คลาสไม่สามารถ สืบทอดทวีคูณ ชั้นเรียน ชั้นเรียน สืบทอด จากมากกว่า หนึ่ง ชั้นเรียกว่า หลายรายการ - มรดก . C# ไม่ ไม่อนุญาต หลายรายการ - มรดก.

ในที่นี้ ปัญหาเพชรในการสืบทอดหลาย C# คืออะไร

NS " ปัญหาเพชร " เป็นความกำกวมที่เกิดขึ้นเมื่อสองคลาส B และ C สืบทอด จาก A และคลาส D สืบทอด จากทั้ง B และ C หากมีเมธอดใน A ที่ B และ C ถูกแทนที่ และ D ไม่ได้แทนที่เมธอด ดังนั้นคลาสของเมธอด D สืบทอด : ของ B หรือของ C?

การสืบทอดหลายรายการใน C # พร้อมตัวอย่างคืออะไร

ค# ไม่อนุญาต หลายมรดก กับคลาส แต่สามารถใช้งานได้โดยใช้อินเตอร์เฟส เหตุผลเบื้องหลังคือ: มรดกหลายอย่าง เพิ่มความซับซ้อนมากเกินไปโดยมีประโยชน์เพียงเล็กน้อย มีโอกาสสูงที่จะขัดแย้งกับสมาชิกคลาสพื้นฐาน มรดก ด้วยอินเทอร์เฟซให้งานเดียวกันของ หลายมรดก.