เหตุใดการสืบทอดหลายรายการจึงได้รับการสนับสนุนใน C ++ แต่ไม่รองรับใน Java
เหตุใดการสืบทอดหลายรายการจึงได้รับการสนับสนุนใน C ++ แต่ไม่รองรับใน Java

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

วีดีโอ: เหตุใดการสืบทอดหลายรายการจึงได้รับการสนับสนุนใน C ++ แต่ไม่รองรับใน Java
วีดีโอ: #6.3 Java Tutorial | Multiple Inheritance in Java? 2024, อาจ
Anonim

C++ , เสียงกระหึ่มทั่วไปและภาษาอื่นๆ อีกเล็กน้อย รองรับหลายมรดก ในขณะที่ จาวา ไม่ สนับสนุน มัน. Java ไม่อนุญาต หลายมรดก เพื่อหลีกเลี่ยงความคลุมเครือที่เกิดจากมัน ตัวอย่างหนึ่งของปัญหาดังกล่าวคือ ปัญหาเพชรที่เกิดขึ้นใน หลายมรดก.

เหตุใด Java จึงไม่รองรับการสืบทอดหลายรายการ

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

นอกจากนี้ปัญหาเพชรในการสืบทอดหลายรายการคืออะไร? NS ปัญหาเพชร ” เป็นความคลุมเครือที่เกิดขึ้นจากการยอมให้ หลายมรดก . เป็นเรื่องร้ายแรง ปัญหา สำหรับภาษา (เช่น C++) ที่อนุญาตให้ หลายมรดก ของรัฐ อย่างไรก็ตาม ในจาวา หลายมรดก ไม่อนุญาตสำหรับคลาส สำหรับอินเทอร์เฟซเท่านั้น และไม่มีสถานะ

ในทำนองเดียวกันผู้คนถามว่าทำไม C ++ ถึงรองรับการสืบทอดหลายรายการ แต่ C # ไม่รองรับ

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

C ++ รองรับการสืบทอดหลายรายการอย่างไร

ไม่เหมือนกับภาษาโปรแกรมเชิงวัตถุอื่นๆ C++ อนุญาต หลายมรดก . มรดกหลายอย่าง อนุญาตให้ชั้นเรียนลูกไป สืบทอด จากคลาสผู้ปกครองมากกว่าหนึ่งคลาส ชั้นเรียนสัตว์และสัตว์เลื้อยคลาน สืบทอด จากมัน. เฉพาะคลาส Animal เท่านั้นที่แทนที่เมธอด breath()