วีดีโอ: C # รองรับการสืบทอดหลายรายการหรือไม่
2024 ผู้เขียน: Lynn Donovan | [email protected]. แก้ไขล่าสุด: 2023-12-15 23:54
มรดกหลายอย่าง ใน ค#
ค# ไม่ รองรับมรดกหลายตัว เพราะพวกเขาให้เหตุผลว่าการเพิ่ม หลายมรดก เพิ่มความซับซ้อนมากเกินไปให้กับ ค# ในขณะที่ให้ประโยชน์น้อยเกินไป ใน ค# , อนุญาตให้คลาสเรียนได้เท่านั้น สืบทอด จากคลาสผู้ปกครองเดี่ยวซึ่งเรียกว่า single มรดก
เมื่อพิจารณาถึงสิ่งนี้ C # มีการสืบทอดหลายรายการหรือไม่
ใน มรดกหลายอย่าง , หนึ่งชั้นสามารถ มี ซูเปอร์คลาสมากกว่าหนึ่งและ สืบทอด คุณสมบัติจากคลาสพาเรนต์ทั้งหมด แต่ C# ไม่ ไม่ รองรับหลายตัว ระดับ มรดก . เพื่อแก้ปัญหานี้ เราใช้อินเทอร์เฟซเพื่อให้บรรลุ หลายรายการ ระดับ มรดก.
ในทำนองเดียวกัน เหตุใด. NET จึงไม่รองรับการสืบทอดหลายรายการ สุทธิ และนักออกแบบ Java ก็ได้ ไม่ อนุญาต หลายมรดก เพราะพวกเขาให้เหตุผลว่าการเพิ่ม MI นั้นเพิ่มความซับซ้อนให้กับภาษามากเกินไปในขณะที่ให้ประโยชน์น้อยเกินไป จริงๆ แล้ว ภาษาต่างๆ มีความคาดหวังที่แตกต่างกันสำหรับวิธีการทำงานของ MI
นอกจากนี้ ยังต้องทราบอีกว่า ภาษาโปรแกรมใดที่ไม่สนับสนุนการสืบทอดหลายรายการ
C++ , เสียงกระเพื่อมทั่วไป และภาษาอื่นๆ อีกสองสามภาษารองรับการสืบทอดหลายรายการในขณะที่จาวาไม่รองรับ Java ไม่อนุญาตให้มีการสืบทอดหลายรายการเพื่อหลีกเลี่ยงความกำกวมที่เกิดขึ้น
คุณสามารถสืบทอดหลายคลาสได้หรือไม่?
มรดกหลายอย่าง เป็นคุณลักษณะของแนวคิดเชิงวัตถุ โดยที่ a คลาสสามารถสืบทอด คุณสมบัติมากกว่า หนึ่ง พ่อแม่ ระดับ . ปัญหาเกิดขึ้นเมื่อมีเมธอดที่มีลายเซ็นเหมือนกันทั้งใน super ชั้นเรียน และคลาสย่อย
แนะนำ:
Java รองรับการสืบทอดหลายรายการหรือไม่ เพราะเหตุใด
Java ไม่สนับสนุนการสืบทอดหลายรายการผ่านคลาส แต่ผ่านอินเทอร์เฟซ เราสามารถใช้การสืบทอดได้หลายรายการ ไม่มี java ไม่สนับสนุนการสืบทอดหลายรายการโดยตรง เนื่องจากจะนำไปสู่การแทนที่เมธอดเมื่อคลาสขยายทั้งสองมีชื่อเมธอดเดียวกัน
Scala รองรับการสืบทอดหลายรายการหรือไม่
Scala ไม่อนุญาตให้มีการสืบทอดหลายรายการต่อตัว แต่อนุญาตให้ขยายคุณสมบัติได้หลายแบบ ลักษณะใช้เพื่อแบ่งปันอินเทอร์เฟซและฟิลด์ระหว่างชั้นเรียน คล้ายกับอินเทอร์เฟซของ Java 8 คลาสและอ็อบเจ็กต์สามารถขยาย trait ได้ แต่ trait ไม่สามารถสร้างอินสแตนซ์ได้ ดังนั้นจึงไม่มีพารามิเตอร์