मैं जावा में नया हूं, और मैंने ओवरराइडिंग विधियों पर कुछ ट्यूटोरियल्स को पढ़ा है, लेकिन एक उदाहरण जो मैं देख रहा हूं वह जिस तरह से मैं उम्मीद कर रहा हूं वह काम नहीं कर रहा है।जावा विधि को ओवरराइड करना
public class A{
public void show(){
System.out.println("A");
}
public void run(){
show();
}
public static void main(String[] arg) {
new A().run();
}
}
public class B extends A{
@Override
public void show(){
System.out.println("B");
}
}
जब मैं का दृष्टांत और B.run फोन(), मैं 'बी' outputted देखने की अपेक्षा करेंगे: उदाहरण के लिए, मैं कोड है। हालांकि, मैं इसके बजाय "ए" देखता हूं। मैं क्या गलत कर रहा हूं?
संपादित करें: हाँ, कक्षाएं दो अलग-अलग फाइलों में हैं। वे संक्षिप्तता के लिए एक साथ दिखाए जाते हैं।
संपादित करें: मुझे यकीन नहीं है कि बी को तत्काल कैसे किया जा रहा है, क्योंकि यह क्लासलोडर का उपयोग करके किसी तृतीय-पक्ष प्रोग्राम द्वारा किया जा रहा है।
संपादित करें: तीसरे पक्ष के कार्यक्रम पर अधिक जानकारी। यह एमेन() को कॉल करके शुरू होता है, जिसे मैंने शुरू में नहीं दिखाया था (माफ करना)। मुझे लगता है कि मुझे "नया ए() रन();" वर्तमान वर्ग के नाम का उपयोग करने के लिए अधिक सामान्य। क्या यह संभव है?
आप कैसे तत्काल और इसे कॉल कर रहे हैं? –
@ प्र्रासून फ़ाइल का केवल कोई उल्लेख नहीं था, केवल कक्षाएं। हम उन वास्तविक फ़ाइलों का अनुमान नहीं लगा सकते थे, जिनमें वे थे। – KLE