2011-03-03 13 views
7

से वर्ग का दृष्टांत मैं निम्नलिखित है,जावा स्ट्रिंग

public interface SuperbInterface 
public class A implements SuperbInterface 
public class B extends A 
public class C extends B 

मैं C का दृष्टांत करना चाहते हैं, लेकिन मैं B हो रही हो सकता है, क्या मैं गलत क्या किया है?

Class classz = Class.forName("C"); 
SuperbInterface superb = (SuperbInterface)classz.newInstance(); 

//Here when I debug it seems to be going to B.doWork() methods instead of C.doWork(). 
superb.doWork(); 
+3

क्या आपने 'सी' में डू वर्क को ओवरराइड किया है ?? कृपया प्रासंगिक कोड को पूरी तरह से दिखाएं –

+1

अपना पूरा कोड –

उत्तर

5

केवल एक चीज मैं के बारे में सोच सकते हैं कि आप

शायद तुम कोशिश की है OT ओवरराइड सी में doWork() ओवरराइड नहीं किया है, लेकिन विधि का नाम या गलत मापदंडों में कुछ वर्तनी की गलती के साथ है ?

+0

दिखाएं क्योंकि यह पता चला है कि बिल्ड पथ में एक अप्रचलित जार है, ऐसा इसलिए होता है कि इस जार 'सी' में अभी भी 'बी' के डू वर्क को ओवरराइड नहीं किया गया है। ओह! –

0

क्या आप सुनिश्चित हैं कि CdoWork विधि ओवरराइड करता है? प्रश्न के आधार पर यह अनुमान लगाया गया है कि यह B, C को विस्तारित करने के हिस्से के रूप में doWork के लिए अपना कार्यान्वयन प्रदान नहीं करता है और इसके बजाय सुपरक्लास B प्रदान करने वाले व्यक्ति पर निर्भर करता है।

1

मान लें कि आप जावा के एक नए संस्करण का उपयोग कर रहे हैं @Override doWork विधि में जोड़ें। यदि आपने गलत तरीके से विधि को ओवरराइड किया है तो संकलक आपको बताएगा।

0

मैं परिणाम देखें:

ए का काम करते हो

क्या बातें आप उम्मीद कर रहे हैं?

संबंधित मुद्दे