संभव डुप्लिकेट:
Why is super.super.method(); not allowed in Java?जावा:। कैसे ओवरराइड विधि में सुपर कॉल करने के लिए() सुपर() (दादा-दादी विधि)
मैं 3 वर्गों है वे के रूप में एक दूसरे से वारिस इस प्रकार है:
A
↳
B
↳
C
प्रत्येक वर्ग मैं निम्न विधि है अंदर:
protected void foo() {
...
}
वर्ग C
मैं कक्षा A
से foo
कॉल करना चाहते हैं अंदर B
में foo
बुला बिना:
protected void foo() {
// This doesn't work, I get the following compile time error:
// Constructor call must be the first statement in a constructor
super().super().foo();
}
संपादित
कुछ प्रसंग जानकारी:
कक्षा बी एक वास्तविक वर्ग हम इस्तेमाल करते हैं। कक्षा सी एक यूनिट टेस्ट क्लास है, इसमें कुछ संशोधन हैं। foo
B
के अंदर विधि कुछ चीजें जो हम नहीं चाहते हैं, इसलिए हम C
के अंदर इसे ओवरराइड करते हैं। हालांकि foo
कक्षा A
में उपयोगी है और इसे कॉल करने की आवश्यकता है।
में
foo()
फोन करेगा इस विषय http पर एक नज़र डालें: // stackoverflow .com/प्रश्न/586,363/क्यों-सुपर-सुपर-विधि-नहीं-अनुमति-इन-जावा है – Pr0gr4mm3r