के भीतर से सुपर विधि को कॉल करना एक मस्तिष्क-बहन उदाहरण के रूप में मेरा एक प्रोफेसर ने हमें विरासत के बारे में जानने के लिए अभ्यास का पालन किया। हमें आउटपुट का पता लगाना पड़ा।सुपर क्लास
//java
public class A {
public void f() {
System.out.println("A -> f()");
x = x + 4;
if (x < 15) this.f(); //the f-call
}
public int x = 5;
}
public class B extends A {
@Override
public void f() {
System.out.println("B -> f()");
x = x + 3;
super.f();
}
}
public class Main {
public static void
main(String[] args) {
A a = new B();
System.out.println("a.f()");
a.f();
System.out.println(a.x);
}
}
उत्पादन, जैसा कि मैंने उम्मीद थी, है
- वायुसेना()
- बी -> च()
- A -> च()
- बी -> f ()
- A -> च()
हालांकि, अब मैं सोच रहा था। एफ-कॉल को ए में एफ विधि कॉल करने का कोई तरीका है, भले ही मैं इसे बी-ऑब्जेक्ट से उपयोग करता हूं, जिस तरह से मैं सुपर बीएफ() का उपयोग करके ए में बी से कॉल करता हूं। । तो उत्पादन बन जाएगा (मुझे लगता है कि):
- वायुसेना()
- बी -> च()
- A -> च()
- A -> च()
क्या यह संभव है? और यदि हां, तो कैसे?
नोट: मुझे यकीन है कि क्या इस के व्यावहारिक अनुप्रयोग होगा नहीं कर रहा हूँ, मैं सिर्फ कुछ नया सीखने की कोशिश कर रहा हूँ: पी
तो अनिवार्य रूप से, आप स्वयं को कॉल करने की विधि चाहते हैं?मुझे नहीं लगता कि आप ऐसा कर सकते हैं –
हां, यह वही है जो मैं करना चाहता हूं। –
@ चार्ल्सविटफील्ड बेशक एक विधि स्वयं को कॉल कर सकती है। इसे एक पुनरावर्ती विधि कहा जाता है। ओपी का सवाल यह है कि क्या माता-पिता वर्ग के भीतर से किसी विधि के मूल संस्करण को निर्दिष्ट करना संभव है। – shmosel