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