จากหน้าเอกสารของ Oracle เกี่ยวกับประเภทมรดกหลายเราสามารถหาคำตอบที่ถูกต้องที่นี่ ที่นี่เราควรทราบประเภทของการสืบทอดหลายรายการใน java ก่อน: -
- การสืบทอดหลายสถานะ
- การสืบทอดการใช้งานหลายครั้ง
- การสืบทอดหลายประเภท
Java "ไม่สนับสนุนการสืบทอดหลายสถานะ แต่สนับสนุนการสืบทอดการใช้งานหลาย ๆ แบบด้วยวิธีการเริ่มต้นตั้งแต่การเผยแพร่ java 8 และการสืบทอดหลายประเภทพร้อมอินเทอร์เฟซ
จากนั้นคำถามก็เกิดขึ้นสำหรับ "ปัญหาเพชร" และวิธีที่ Java จัดการกับสิ่งนั้น: -
ในกรณีที่มีการสืบทอดการใช้งานคอมไพลเลอร์ java หลายรายการทำให้เกิดข้อผิดพลาดในการคอมไพล์และขอให้ผู้ใช้แก้ไขโดยระบุชื่ออินเตอร์เฟส ตัวอย่างที่นี่: -
interface A {
void method();
}
interface B extends A {
@Override
default void method() {
System.out.println("B");
}
}
interface C extends A {
@Override
default void method() {
System.out.println("C");
}
}
interface D extends B, C {
}
ดังนั้นที่นี่เราจะได้รับข้อผิดพลาดเป็น: - อินเทอร์เฟซ D สืบทอดค่าเริ่มต้นที่ไม่เกี่ยวข้องสำหรับ method () จากอินเทอร์เฟซ B และ C ประเภท D ขยาย B, C
คุณสามารถแก้ไขได้เช่น: -
interface D extends B, C {
@Override
default void method() {
B.super.method();
}
}
- ในการสืบทอดหลายประเภทของ java อนุญาตให้ใช้งานได้เนื่องจากอินเทอร์เฟซไม่มีฟิลด์ที่เปลี่ยนแปลงได้และมีเพียงการใช้งานเดียวเท่านั้นที่จะเป็นของคลาสดังนั้น java จึงไม่ให้ปัญหาใด ๆ และช่วยให้คุณทำเช่นนั้นได้
ในบทสรุปเราสามารถพูด Java ที่ไม่สนับสนุน มรดกหลายของรัฐแต่ก็ไม่สนับสนุน มรดกหลายของการดำเนินงานและมรดกหลายประเภท