Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Java

क्या जावा में ओवरराइड करते समय पैरेंट चाइल्ड पदानुक्रम थ्रो पर महत्वपूर्ण है?

जब आप किसी विशेष विधि द्वारा फेंके गए अपवाद (चेक किए गए) को संभालने का प्रयास करते हैं, तो आपको अपवाद का उपयोग करके इसे पकड़ने की आवश्यकता होती है अपवाद का वर्ग या सुपर वर्ग हुआ।

उसी तरह एक सुपर क्लास की विधि को ओवरराइड करते समय, यदि यह एक अपवाद फेंकता है -

  • उप-वर्ग में विधि समान अपवाद या उसके उप प्रकार को फेंकना चाहिए।

  • उप-वर्ग में विधि को अपना सुपर टाइप नहीं फेंकना चाहिए।

  • आप बिना किसी अपवाद के इसे ओवरराइड कर सकते हैं।

जब आपके पास डेमो, सुपरटेस्ट और सुपर इन (पदानुक्रमित) इनहेरिटेंस नामक तीन वर्ग हों, यदि डेमो और सुपरटेस्ट में नमूना () नामक एक विधि है ।

उदाहरण

क्लास डेमो {सार्वजनिक शून्य नमूना () ArrayIndexOutOfBoundsException फेंकता है {System.out.println ("डेमो क्लास का नमूना () विधि"); }}क्लास सुपरटेस्ट डेमो का विस्तार करता है {सार्वजनिक शून्य नमूना() इंडेक्सऑटऑफबाउंड अपवाद फेंकता है {System.out.println ("सुपरटेस्ट क्लास का नमूना() विधि"); }}पब्लिक क्लास टेस्ट सुपरटेस्ट का विस्तार करता है {सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग आर्ग्स []) { डेमो ओबीजे =नया सुपरटेस्ट (); कोशिश करें {obj.sample (); }कैच (ArrayIndexOutOfBoundsException पूर्व) { System.out.println ("अपवाद"); } }}

आउटपुट

सुपरटेस्ट क्लास की
नमूना() विधि

यदि आप जिस वर्ग के साथ अपवाद पकड़ते हैं, वह समान नहीं है या, अपवाद या, उठाए गए अपवाद का सुपर वर्ग है, तो आपको संकलन समय त्रुटि मिलेगी।

उसी तरह, एक विधि को ओवरराइड करते समय फेंका गया अपवाद समान होना चाहिए या, ओवरराइड विधि द्वारा फेंके गए अपवाद का सुपर क्लास अन्यथा एक संकलन समय त्रुटि उत्पन्न होती है।

उदाहरण

आयात करें }}क्लास सुपरटेस्ट डेमो का विस्तार करता है {सार्वजनिक शून्य नमूना () EOFException फेंकता है {System.out.println ("सुपरटेस्ट क्लास का नमूना () विधि"); }}पब्लिक क्लास टेस्ट सुपरटेस्ट का विस्तार करता है {सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग आर्ग्स []) { डेमो ओबीजे =नया सुपरटेस्ट (); कोशिश करें {obj.sample (); }कैच (EOFException पूर्व){ System.out.println ("अपवाद"); } }}

आउटपुट

Test.java:12:error:sample() Demopublic void sample() में नमूना ओवरराइड नहीं कर सकता है IOException { ^ ओवरराइड विधि IOException1 errorD:\>javac Test.javaTest.java:20 नहीं फेंकता है:त्रुटि:रिपोर्ट न किए गए अपवाद IOException; पकड़ा जाना चाहिए या फेंक दिया जाना चाहिए obj.sample(); ^1 त्रुटि

  1. जावा में सुपर कीवर्ड

    सुपर वेरिएबल तत्काल पैरेंट क्लास इंस्टेंस को संदर्भित करता है। सुपर वैरिएबल तत्काल पैरेंट क्लास मेथड को लागू कर सकता है। super() तत्काल पैरेंट क्लास कंस्ट्रक्टर के रूप में कार्य करता है और चाइल्ड क्लास कंस्ट्रक्टर में पहली पंक्ति होना चाहिए। एक ओवरराइड विधि के सुपरक्लास संस्करण को लागू करते समय सुप

  1. जावा में विधि ओवरराइडिंग

    ओवरराइडिंग एक ऐसे व्यवहार को परिभाषित करने की क्षमता है जो उपवर्ग प्रकार के लिए विशिष्ट है, जिसका अर्थ है कि एक उपवर्ग अपनी आवश्यकता के आधार पर एक मूल वर्ग विधि को लागू कर सकता है। ऑब्जेक्ट-ओरिएंटेड शब्दों में, ओवरराइडिंग का अर्थ मौजूदा पद्धति की कार्यक्षमता को ओवरराइड करना है। उदाहरण आइए एक उदाहरण

  1. पायथन में ओवरराइड करने के तरीके

    आप हमेशा अपने मूल वर्ग के तरीकों को ओवरराइड कर सकते हैं। माता-पिता के तरीकों को ओवरराइड करने का एक कारण यह है कि आप अपने उपवर्ग में विशेष या अलग कार्यक्षमता चाहते हैं। उदाहरण #!/usr/bin/python class Parent: # define parent class    def myMethod(self):       print 'Callin