जावा में, static
कीवर्ड को आमतौर पर झंडे एक विधि या नहीं एक बार एक वर्ग के उदाहरण प्रति मौजूदा रूप में क्षेत्र, लेकिन एक बार कभी। वैसे भी एक वर्ग मौजूद है, फिर भी, सभी वर्ग इस तरह से "स्थैतिक" हैं और सभी वस्तुएं कक्षाओं के उदाहरण हैं।
static
भीतरी कक्षाएं, जो पूरी तरह से अलग है के लिए एक अर्थ है: आमतौर पर एक आंतरिक वर्ग उदाहरण एक बाहरी वर्ग उदाहरण यह से जुड़ा हुआ है कि के सदस्यों तक पहुँच सकते हैं, लेकिन अगर भीतरी वर्ग static
है, यदि ऐसा नहीं होता इस तरह का एक संदर्भ है और बाहरी वर्ग के उदाहरण के बिना तत्काल किया जा सकता है। हो सकता है कि आपने उस जगह को देखा हो, फिर इसे शीर्ष-स्तरीय वर्ग पर उपयोग करने का प्रयास किया, जहां यह सार्थक नहीं है।
या शायद आपने इसे सी # जैसी अन्य भाषाओं में देखा है, जिसका वाक्यविन्यास जावा की तरह एक भयानक है।
(एक बार मुझे पता नहीं लगा कि बाहरी वर्ग का उदाहरण कचरा-संग्रह क्यों नहीं किया जा रहा था - ऐसा इसलिए था क्योंकि मैं अपने आंतरिक वर्ग उदाहरणों में से किसी एक का संदर्भ रख रहा था, और आंतरिक वर्ग नहीं था static
और इसलिए बाहरी वर्ग के उदाहरण का संदर्भ था। इसलिए डिफ़ॉल्ट रूप से, मैं अब भी आंतरिक कक्षाएं static
बना देता हूं।)
स्रोत
2010-03-04 04:48:53
पर और पढ़ें बहुत अधिक स्पॉट-ऑन। एक आंतरिक वर्ग डिफ़ॉल्ट रूप से स्थैतिक नहीं है, जो कहता है कि एक वर्ग के प्रत्येक उदाहरण जिसमें नेस्टेड क्लास है, नेस्टेड क्लास की अपनी प्रति प्राप्त होती है। इस प्रकार आप वर्ग में "यह" संदर्भित कर सकते हैं, और आप स्थिर विधियों या फ़ील्ड की घोषणा क्यों नहीं कर सकते हैं, कोई समझ नहीं आता है, क्योंकि बाहरी वर्ग के प्रत्येक उदाहरण की अपनी प्रति है। एक "स्थैतिक" घोंसला वर्ग (परिभाषा के अनुसार एक वास्तविक "आंतरिक" वर्ग) का मतलब है कि उस वर्ग की केवल एक प्रति है, जो नियमित कक्षा की तरह अधिक है। मैंने हमेशा सोचा कि इन घोंसले वर्गों के अर्थशास्त्र निराशाजनक रूप से घिरे हुए थे। –
इसके अलावा मैंने प्रति उदाहरण एक बार मौजूद गैर स्थैतिक तरीकों के बारे में सच्चाई झुकाई, वास्तव में वे स्मृति दृष्टिकोण से नहीं हैं। मैं सिर्फ एक वैचारिक बिंदु बना रहा था। –
@jeff, उस वर्ग से ऑब्जेक्ट इंस्टेंटेशन के मामले में एक स्थिर रूप से घोषित आंतरिक कक्षा और गैर स्थैतिक एक के बीच क्या अंतर है? क्या कोई प्रकार है, आप केवल एक स्थिर वस्तु को एक स्थिर आंतरिक वर्ग से तुरंत चालू कर सकते हैं, और एक गैर-स्थैतिक आंतरिक कक्षा से एक से अधिक ऑब्जेक्ट को तुरंत चालू कर सकते हैं? क्या यही है? – ultrajohn