ओरेकल प्रलेखन पृष्ठ से कई उत्तराधिकार प्रकार के बारे में, हम यहां सटीक उत्तर पा सकते हैं । यहाँ हमे पहले पता होना चाहिए कि जावा में कई तरह की विरासत है: -
- राज्य की कई विरासत।
- कार्यान्वयन की एकाधिक विरासत।
- प्रकार की एकाधिक विरासत।
जावा "राज्य की कई विरासत का समर्थन नहीं करता है, लेकिन यह जावा 8 रिलीज के बाद से डिफ़ॉल्ट तरीकों के साथ कार्यान्वयन के कई विरासत का समर्थन करता है और इंटरफेस के साथ कई प्रकार का विरासत है।
फिर यहाँ "हीरे की समस्या" के लिए सवाल उठता है और जावा कैसे निपटता है: -
कार्यान्वयन के कई उत्तराधिकार के मामले में जावा संकलक संकलन त्रुटि देता है और उपयोगकर्ता को इंटरफ़ेस नाम निर्दिष्ट करके इसे ठीक करने के लिए कहता है। यहाँ उदाहरण: -
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, विधि B (C) से विधि () के लिए असंबंधित चूक प्राप्त करता है और D इंटरफ़ेस B, C को विस्तारित करता है
आप इसे ठीक कर सकते हैं: -
interface D extends B, C {
@Override
default void method() {
B.super.method();
}
}
- जावा के कई वंशानुक्रम में यह अनुमति देता है क्योंकि इंटरफ़ेस में परिवर्तन योग्य क्षेत्र नहीं होते हैं और केवल एक कार्यान्वयन वर्ग का होगा इसलिए जावा कोई भी मुद्दा नहीं देता है और यह आपको ऐसा करने की अनुमति देता है।
निष्कर्ष में हम कह सकते हैं कि जावा राज्य के कई उत्तराधिकार का समर्थन नहीं करता है, लेकिन यह कार्यान्वयन के कई उत्तराधिकार और प्रकार के कई वंशानुक्रम का समर्थन करता है ।