public class A {
public void f1(String str) {
System.out.println("A.f1(String)");
this.f1(1, str);
}
public void f1(int i, String str) {
System.out.println("A.f1(int, String)");
}
}
public class B extends A {
@Override
public void f1(String str) {
System.out.println("B.f1(String)");
super.f1(str);
}
@Override
public void f1(int i, String str) {
System.out.println("B.f1(int, String)");
super.f1(i, str);
}
}
public class Main {
public static void main(String[] args) {
B b = new B();
b.f1("Hello");
}
}
मैं मांग कर रहा है कि इस कोड उत्पादन होगा:कॉलिंग आधार वर्ग अधिरोहित समारोह
B.f1(String)
A.f1(String)
A.f1(int, String)
अभी तक मैं हो रही है:
B.f1(String)
A.f1(String)
B.f1(int, String)
A.f1(int, String)
मैं समझता हूँ कि नीचे एएफ 1 (स्ट्रिंग) में बी "यह" का संदर्भ बी का उदाहरण है। क्या मेरे पास चेन नई बी 1()। एफ 1 (स्ट्रिंग) -> (ए) एफ 1 (स्ट्रिंग) -> (ए) एफ 1 (इंट, स्ट्रिंग) करने का विकल्प है?
यह एक सैद्धांतिक सवाल है, व्यावहारिक रूप से समाधान स्पष्ट रूप से ए में एक निजी समारोह को लागू करने के लिए होगा जो एफ 1 (स्ट्रिंग) और एफ 1 (इंट, स्ट्रिंग) दोनों कॉल करेगा।
धन्यवाद,
मैक्सिम।
मैंने प्रतिबिंब का उपयोग करने की कोशिश की (ए के f1 (int, स्ट्रिंग) के लिए विधि-वस्तु प्राप्त करना और इसे आमंत्रित करना), लेकिन यह काम नहीं किया। यह [ब्लॉग एंट्री] [1] सन के ब्लॉग्स में इंगित करता है कि जावा के साथ यह संभव नहीं है। [1]: http://blogs.sun.com/sundararajan/entry/calling_overriden_superclass_method_on – esaj
@esaj लिंक –