क्या आपके दो वर्ग अलग-अलग पैकेज में हैं? और क्या आपकी फू क्लास विधियों ने सार्वजनिक, संरक्षित, या निजी या पैकेज स्थानीय घोषित किया है? जाहिर है अगर वे निजी हैं, तो यह काम नहीं करेगा। शायद कम स्पष्ट, यह है कि यदि वे पैकेज स्थानीय हैं (यानी कोई सार्वजनिक/संरक्षित/निजी दायरा नहीं है) तो आप केवल मूल श्रेणी के समान पैकेज में हैं, तो आप उन्हें केवल ओवरराइड कर सकते हैं।
उदाहरण के लिए:
package original;
public class Foo {
void a() { System.out.println("A"); }
public void b() { a(); }
}
package another;
public class Bar extends original.Foo {
void a() { System.out.println("Overwritten A"); }
}
package another;
public class Program {
public static void main(String[] args) {
Bar bar = new Bar();
bar.b();
}
}
इस मामले में, आप अभी भी 'ए' मिल जाएगा। यदि आप फू सार्वजनिक या संरक्षित में मूल() विधि घोषित करते हैं, तो आपको अपेक्षित परिणाम मिल जाएगा।
उपद्रव को क्षमा करें: इसे "ओवरराइडिंग" कहा जाता है, न कि "ओवरराइटिंग"। – erickson
जैसा आपने लिखा है, उसे कोड करना चाहिए जैसा कि आप उम्मीद करते हैं - जैसा कि नीचे दिए गए कई उत्तर आपको प्राप्त करने के लिए सुझाव देते हैं, आपको अपने कोड में कुछ और करना होगा जो आप यहां नहीं दिखा रहे हैं। – Eborbob