मैं एक वर्ग वस्तु तब भी जब यह जावा में संकलन त्रुटि दे रहा है बनाने के लिए कर रहा हूँ

वोट
3

आज, मैं एक परिदृश्य में जहाँ मैं बच्चे को कक्षा में इंटरफ़ेस के सभी तरीकों ओवरराइड नहीं है भर में आया था। हालांकि, जब मैं बच्चा वर्ग की एक वस्तु बनाने की कोशिश की, यह अभी भी ठीक काम किया। मेरे धारणा अब तक है कि हम वस्तुओं नहीं बना सकते, जब तक कि सभी संकलन त्रुटियों का समाधान है।

इस पर कुछ प्रकाश डाला करें।

उदाहरण मैं ले लिया है।

interface Parent {
   public void test();
}

class Child implements Parent {
   public void print() {
      System.out.println(Didn't expect to print);
   }
}

बाल वर्ग मुझे मुझसे पूछे इंटरफ़ेस से तरीकों ओवरराइड करने के लिए संकलन समय त्रुटि दे रहा था। त्रुटि की उपेक्षा कर, जब मैं नीचे की तरह वस्तु बनाने और अगले बयान पर अमल करने की कोशिश की, यह मेरे आउटपुट के रूप में तल पर संकेत दिया दिया।

Child child = new Child();
child.print();

आउटपुट:

Didn't expect to print

पुनश्च: मैं जावा 7 पर इस की कोशिश की

कृपया मुझे पता है अगर मेरी बुनियादी समझ (कि जावा वस्तुओं संकलन त्रुटियों को हल किए बिना नहीं बनाया जा सकता) गलत है

26/06/2018 को 12:56
उपयोगकर्ता
अन्य भाषाओं में...                            


3 जवाब

वोट
6

यह तभी संभव है यदि आपके आईडीई कैश की गई है Childवर्ग इससे पहले कि आप जोड़ा Parentएक सुपर क्लास के रूप में यह करने के लिए। अन्यथा यह सब पर संकलन नहीं होंगे।

26/06/2018 को 12:59
का स्रोत उपयोगकर्ता

वोट
0

किसी भी संयोग से आप classpath में एक ही नाम और पैकेज के साथ दो वर्गों है, तो जावा पहले एक यह पाता है और इसका इस्तेमाल करने के लिए लग रहा है। तो अगर वहाँ पहले से ही वहाँ अपने Parent.class का एक और संस्करण जोड़ा समारोह में यह नया एक से अधिक चुना जा सकता है बिना है।

26/06/2018 को 13:12
का स्रोत उपयोगकर्ता

वोट
2

मैं तो बस इस हालत पुन: पेश करने के लिए निम्न था (कमांड लाइन से, इसलिए कोई आईडीई चल रहा धोखाधड़ी कर रहे हैं):

  1. बिना जनक इंटरफ़ेस बनाएँ testविधि घोषणा।
  2. बाल वर्ग कि जनक लागू करता है बनाएँ।
  3. एक के साथ एक चालक कक्षा बनाएं mainविधि है कि एक बच्चे की वस्तु और कॉल को दर्शाता है print
  4. कोई त्रुटि के साथ सब कुछ संकलित करें।

सब कुछ काम करता है, के रूप में उम्मीद।

मैं तो जोड़ा testजनक इंटरफ़ेस करने के लिए विधि घोषणा एवं बाल वर्ग को संकलित करने की कोशिश की और उम्मीद त्रुटि संदेश मिला:

बाल सार नहीं है और माता पिता में सार विधि परीक्षण () पर हावी नहीं होता

मैं एक ही त्रुटि मिलती है अगर मैं ड्राइवर वर्ग को संकलित करने का प्रयास करें।

लेकिन जब मैं अपने फाइल सिस्टम की जाँच, पुराने Child.class फ़ाइल अभी भी वहाँ है, और ड्राइवर कार्यक्रम यह अभी भी उपयोग करता है ठीक चलाता है। ये वर्ग फ़ाइलों कि प्रतिस्थापित या हटाया नहीं गया था जब मैं फिर से संकलन करने की कोशिश की की पुरानी प्रतियां हैं। एक ठेठ निर्माण उन, संकलन से पहले साफ सुनिश्चित करना है कि पुरानी पड़ चुकी कक्षाएं एक नया वितरण का हिस्सा नहीं हैं जाएगा।

26/06/2018 को 13:23
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more