जावा में फाइनल, फाइनल और फाइनल के बीच अंतर
विषय
शब्द lies अंतिम, अंत में, और अंतिम रूप से जावा के चुनाव के भीतर निहित हैं। उनमें से प्रत्येक को एक अलग कार्य प्रदान किया जाता है। अंतिम, अंतिम और अंतिम के बीच का मूल अंतर यह है कि अंतिम एक पहुँच संशोधक है, आखिरकार एक ब्लॉक है और को अंतिम रूप देने ऑब्जेक्ट क्लास की एक विधि है। अंतिम, अंतिम और अंतिम के बीच कुछ अन्य अंतर हैं, जिनकी तुलना चार्ट में की गई है।
- तुलना चार्ट
- परिभाषा
- मुख्य अंतर
- निष्कर्ष
तुलना चार्ट
तुलना के लिए आधार | अंतिम | आखिरकार | अंतिम रूप |
---|---|---|---|
बुनियादी | जावा में फाइनल एक "कीवर्ड" और "एक्सेस मॉडिफायर" है। | अंत में जावा में एक "ब्लॉक" है। | अंतिम रूप जावा में एक "विधि" है। |
उपयुक्त | फाइनल एक कीवर्ड है जो कक्षाओं, चर और विधियों पर लागू होता है। | अंत में एक ऐसा ब्लॉक है जो हमेशा कोशिश और कैच ब्लॉक से जुड़ा होता है। | अंतिम रूप () वस्तुओं पर लागू एक विधि है। |
काम कर रहे | (1) अंतिम चर स्थिर हो जाता है, और इसे पुन: असाइन नहीं किया जा सकता है। (2) बालक वर्ग द्वारा एक अंतिम विधि को अतिरंजित किया जाना चाहिए। (3) फाइनल क्लास को बढ़ाया नहीं जा सकता। | एक "अंत में" ब्लॉक, "कोशिश" ब्लॉक में उपयोग किए गए संसाधनों को साफ करें। | अंतिम विधि अपने विनाश से पहले ऑब्जेक्ट से संबंधित गतिविधियों को साफ करती है। |
क्रियान्वयन | इसके आह्वान पर अंतिम विधि निष्पादित की जाती है। | "आखिरकार" ब्लॉक-कैच "ब्लॉक के निष्पादन के ठीक बाद ब्लॉक निष्पादित होता है। | अंतिम () विधि ऑब्जेक्ट के विनाश से ठीक पहले निष्पादित होती है। |
फाइनल की परिभाषा
"फाइनल" जावा में एक कीवर्ड है। यह एक एक्सेस मॉडिफायर है। "अंतिम" कीवर्ड कक्षाओं, विधियों और चर पर लागू होता है। आइए देखें कि यह उनमें से प्रत्येक के साथ कैसे काम करता है।
अंतिम चर
- जब एक अंतिम कीवर्ड चर पर लागू होता है, तो इसे और संशोधित नहीं किया जा सकता है।
- घोषित होने पर एक अंतिम चर आरंभ किया जाना चाहिए।
- एक आम कोडिंग कन्वेंशन में, अंतिम चर UPPERCASE में घोषित किए जाते हैं।
- अंतिम चर प्रति-आवृत्ति के आधार पर मेमोरी पर कब्जा नहीं करता है।
अंतिम तरीके
- जब कक्षा में एक विधि को अंतिम रूप में घोषित किया जाता है, तो उसे उपवर्ग द्वारा अधिभूत नहीं किया जा सकता है।
- अंतिम घोषित किए गए छोटे तरीकों को संकलक द्वारा "इनलाइन" बनाया जा सकता है जो फ़ंक्शन कॉलिंग के ओवरहेड को कम करेगा और प्रदर्शन एन्हांसमेंट बढ़ाएगा।
- ओवरराइड किए गए तरीके कॉल करते हैं, गतिशील रूप से हल किए जाते हैं, लेकिन जब किसी विधि को अंतिम घोषित किया जाता है, तो इसे ओवरराइड नहीं किया जा सकता है। इसलिए, फ़ंक्शन कॉलिंग को संकलन समय पर हल किया जा सकता है।
वर्ग ए {अंतिम शून्य मेथ () {System.out.ln ("यह एक अंतिम विधि है।"); }} क्लास B एक {void meth () {// Clas B वर्ग ए की प्रणाली को इनहेरिट नहीं कर सकता है। System.out.ln ("ओवरराइड नहीं करता है"); }}
फाइनल क्लास
- जब किसी वर्ग को अंतिम घोषित किया जाता है, तो उसे किसी भी उपवर्ग से विरासत में नहीं मिला जा सकता है।
- किसी वर्ग को अंतिम घोषित करने से स्वतः ही उसके सभी तरीके अंतिम घोषित हो जाएंगे।
- आप एक वर्ग को "सार" और "अंतिम" दोनों के रूप में घोषित नहीं कर सकते।
अंतिम वर्ग A {// ...} वर्ग B का विस्तार A {// वर्ग B वर्ग A // वारिस नहीं कर सकता है ...}
- जावा में "आखिर" एक ऐसा ब्लॉक है जो हमेशा कोशिश / कैच ब्लॉक से जुड़ा होता है।
- "आखिर" ब्लॉक कोशिश / कैच ब्लॉक के बाद और कोड के बाद कोशिश / कैच ब्लॉक से पहले निष्पादित होता है।
- "अंततः" ब्लॉक निष्पादित करेगा कि क्या अपवाद फेंक दिया गया है या नहीं।
- जब एक अपवाद को फेंक दिया जाता है, और कोई भी पकड़ ब्लॉक अपवाद से मेल नहीं खाता है, तब भी, "अंततः" ब्लॉक निष्पादित होता है।
- जब कोई विधि बिना किसी अपवाद या स्पष्ट रिटर्न स्टेटमेंट के माध्यम से कॉल / पकड़ ब्लॉक के अंदर से कॉलर पर लौटती है, तो कॉल करने वाले के वापस आने से ठीक पहले "अंततः" ब्लॉक निष्पादित हो जाता है।
- "अंततः" ब्लॉक का उपयोग संसाधनों को साफ करने या "कोशिश" ब्लॉक में उपयोग की जाने वाली मेमोरी को मुक्त करने के लिए किया जाता है।
- "अंततः" ब्लॉक वैकल्पिक है, लेकिन कोशिश / कैच ब्लॉक के बाद अंत में ब्लॉक लिखना एक अच्छा अभ्यास है।
class आखिरExample {// यह विधि विधि से एक अपवाद फेंकती है। स्थिर शून्य procA () {try {System.out.ln ("procA के अंदर"); नई RuntimeException फेंक ("डेमो"); } अंत में {System.out.ln ("अंततः खरीदता है"); }} // एक कोशिश ब्लॉक के भीतर से लौटें। स्थिर शून्य procB () {try {System.out.ln ("procB के अंदर"); वापसी; } अंत में {System.out.ln ("procBs आखिर"); }} // सामान्य रूप से एक कोशिश ब्लॉक निष्पादित करें। स्थिर शून्य procC () {try {System.out.ln ("procC के अंदर"); } अंत में {System.out.ln ("अंत में procCs"); }} सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग आर्ग्स) {कोशिश {procA (); } पकड़ (अपवाद ई) {System.out.ln ("अपवाद पकड़ा"); } procB (); procC (); }} // procA के अंदर आउटपुट अंत में खरीद के अंदर पकड़ा गया है procB के अंत में procC के अंत में अंदर है
फाइनल की परिभाषा
- ऑब्जेक्ट क्लास में फ़ाइनलीज़ एक विधि है।
- एक वस्तु कुछ गैर-जावा संसाधनों जैसे फ़ाइल हैंडल; तब इसे नष्ट होने से पहले मुक्त किया जाना चाहिए।
- कचरे को पूरी तरह से नष्ट करने से पहले यह विधि कचरा संग्राहक द्वारा मंगाई जाती है।
- यह विधि नष्ट होने से पहले ऑब्जेक्ट के लिए सफाई गतिविधियाँ करती है।
विधि का सामान्य रूप अंतिम रूप () निम्नानुसार है।
संरक्षित शून्य अंतिम रूप () {// अंतिमकरण कोड यहाँ}
अंतिम विधि को संरक्षित घोषित किया गया है ताकि इसे कक्षा के बाहर से एक्सेस नहीं किया जा सके।
इस विधि को हमेशा कचरा संग्रह से पहले कहा जाता है।
- कीवर्ड अंतिम एक पहुंच संशोधक है, अंत में एक ब्लॉक है और अंतिम रूप एक विधि है।
- कीवर्ड फ़ाइनल कक्षाओं के वर्गों, चर और विधियों पर लागू होता है, अंत में ट्रायल कैच ब्लॉक से जुड़ा एक ब्लॉक होता है जिसका उपयोग अपवादों को संभालने के लिए किया जाता है, फ़ाइनली एक ऐसी विधि है जो केवल वस्तुओं पर संचालित होती है।
- एक बार घोषित किया गया चर अंतिम रूप से स्थिर हो जाता है और उसे फिर से असाइन नहीं किया जा सकता है, अंतिम रूप में घोषित एक विधि को ओवरराइड नहीं किया जा सकता है, और एक बार अंतिम घोषित किए जाने वाले वर्ग को कभी भी विरासत में नहीं मिला जा सकता है। अंतत: ब्लॉक का उपयोग प्रयास द्वारा पकड़े गए संसाधनों को साफ करने और ब्लॉक को पकड़ने के लिए किया जाता है। अंतिम विधि का उपयोग ऑब्जेक्ट को नष्ट करने से पहले किसी ऑब्जेक्ट द्वारा उपयोग किए गए संसाधनों को साफ करने के लिए किया जाता है।
निष्कर्ष:
किसी विधि पर लागू होने पर अंतिम, अंतिम और अंतिम रूप से एक अलग प्रभाव पड़ता है।