जावा शीर्ष स्तर की कक्षा को निजी के रूप में घोषित करने की अनुमति क्यों देता है? क्या "कोई निजी वर्ग तक नहीं पहुंच सकता" के अलावा कोई अन्य कारण है?जावा: हम एक शीर्ष स्तर की कक्षा को निजी क्यों परिभाषित कर सकते हैं?
उत्तर
ठीक है, आप नहीं कर सकते। एक शीर्ष-स्तरीय वर्ग निजी रूप से बेकार होगा क्योंकि इसके लिए कुछ भी नहीं होगा।
जरूरी नहीं कि सच है। कक्षा के ऊपर पहुंच स्तर एक पैकेज है। वर्ग को केवल पैकेज में स्कॉप्ड किया जा सकता है, अन्य पैकेजों तक पहुंच को अस्वीकार कर दिया जा सकता है। – stevebot
@stevebot मुझे लगता है कि 'संरक्षित' –
@ मुहम्मदबाबर वास्तव में कहा जाता है, 'संरक्षित' कक्षाओं के लिए एक कानूनी संशोधक नहीं है। किसी वर्ग को केवल अपने पैकेज में "स्कॉप्ड" होने के लिए, आप बस किसी भी संशोधक ('सार्वजनिक' के विपरीत) निर्दिष्ट नहीं करेंगे –
जावा शीर्ष स्तर की कक्षा को निजी होने की अनुमति नहीं देता है। केवल 'सार्वजनिक' या 'पैकेज'।
सिद्धांत रूप में, आप का दृष्टांत सकता है और फोन एक private
शीर्ष स्तर के वर्ग पर तरीकों (अगर ऐसी बात भाषा ... जो यह नहीं है द्वारा अनुमति दी गई!), लेकिन आप प्रतिबिंब का उपयोग करना होगा यह करने के लिए। स्पष्ट रूप से (आईएमओ) सूर्य ने फैसला किया कि निजी स्तर के वर्ग भाषा स्तर पर समर्थन करने के लिए एक अच्छी बात नहीं थी।
असल में, यह संभव है कि JVM बाइटकोड जादू द्वारा बनाए गए शीर्ष-स्तरीय निजी "वर्ग" का समर्थन कर सके। लेकिन यह करने के लिए एक उपयोगी बात नहीं है।
अद्यतन - वास्तव में, current JVM spec यह स्पष्ट करता है कि एक वर्ग के लिए पहुँच झंडे शब्द के ACC_PRIVATE बिट "भविष्य में उपयोग हेतु आरक्षित" है, और जावा कार्यान्वयन के रूप में सेट किए बिना व्यवहार करना चाहिए कि। इस प्रकार, उपर्युक्त अनुमान किसी भी JVM के लिए म्यूट है जो वर्तमान विनिर्देश को सख्ती से लागू करता है।
उस वर्ग या उसके सदस्यों तक पहुंचने का कोई तरीका नहीं होगा।
मेरा मानना है कि एक बेहतर सवाल होगा:
क्या यह एक शीर्ष स्तर वर्ग निजी होने के लिए मतलब होगा?
यदि आप पहुंच स्तर के मामले में सोचते हैं, तो कक्षा के ऊपर का स्तर पैकेज है। वास्तव में आप जावा में पैकेज निजी शीर्ष स्तर के वर्ग हो सकता है! Oracle (formerly Sun) Java tutorials से ले रहा है: एक वर्ग नहीं संशोधक (डिफ़ॉल्ट, यह भी पैकेज-निजी के रूप में जाना जाता है) है
, तो वह केवल अपनी ही पैकेज में दिखाई देता है (संकुल संबंधित वर्गों के समूहों नाम हैं - आप के बारे में सीखना होगा उन्हें बाद के पाठ में।)
मैंने पूछा प्रश्न के उत्तर के आधार पर, यह "शीर्ष स्तर की निजी कक्षा" की आपकी परिभाषा के अनुरूप हो सकता है।
निजी कक्षाओं की अनुमति है, लेकिन केवल आंतरिक या घोंसले वाले वर्गों के रूप में। यदि आपके पास निजी आंतरिक या घोंसला वाली कक्षा है, तो उस बाहरी वर्ग के दायरे तक पहुंच प्रतिबंधित है।
यदि आपके पास शीर्ष स्तर की कक्षा के रूप में निजी श्रेणी है, तो आप इसे कहीं से भी एक्सेस नहीं कर सकते हैं। इसलिए यह शीर्ष स्तर की निजी कक्षा के लिए समझ में नहीं आता है।
हम बाहरी वर्ग को निजी के रूप में घोषित नहीं कर सकते हैं। अधिक सटीक हम बाहरी वर्ग के साथ निजी पहुंच विनिर्देश का उपयोग नहीं कर सकते हैं। जैसे ही आप कक्षा के साथ निजी एक्सेस विनिर्देशक का उपयोग करने का प्रयास करेंगे, आपको एक्लिप्स में एक त्रुटि के रूप में एक संदेश मिलेगा जो केवल सार्वजनिक, अंतिम, सार का उपयोग क्लास के साथ एक्सेस संशोधक के रूप में किया जा सकता है।
कक्षा को निजी बनाना कोई समझ नहीं आता है क्योंकि हम इसके वर्ग के कोड तक नहीं पहुंच सकते हैं।
आप एक शीर्ष स्तरीय वर्ग निजी (या जनता के अलावा कुछ भी नहीं) परिभाषित नहीं कर सकते हैं। आपको एक संकलन त्रुटि मिलेगी।
Something.java:6: error: modifier private not allowed here
private class Something {
^
1 error
आप केवल दो विकल्प, सार्वजनिक या पहुँच नहीं संशोधक बिल्कुल। सार्वजनिक रूप से आपको छोड़कर, स्पष्ट रूप से, पैकेज के भीतर कक्षा तक पहुंच सीमित करें (उर्फ: पैकेज-प्राइवेट)।
इस बारे में एक सरल समझ की आवश्यकता है कि जावा में कक्षाओं को निजी घोषित करने की आवश्यकता क्यों नहीं है। यदि आपकी कक्षा स्वयं एक स्टैंडअलोन प्रोग्राम/सॉफ़्टवेयर है (जो बेहद असंभव है) तो आप इसे पहले से ही एक प्रोजेक्ट और इसके लिए विशिष्ट पैकेज में परिभाषित कर चुके होंगे। तो निजी कीवर्ड जोड़ना इसके लिए अनावश्यक है। यदि ऐसा नहीं है तो डिफ़ॉल्ट पहुंच तब होती है इसका मतलब है कि आपका प्रोग्राम/सॉफ्टवेयर चलाने के लिए विभिन्न वर्गों पर निर्भर करता है। यदि हम उनमें से एक वर्ग को निजी के रूप में घोषित कर रहे हैं (अगर हम कर सकते हैं) तो हम अन्य वर्गों द्वारा अपनी पहुंच को सीमित कर रहे हैं, जिसका कोई उपयोग नहीं है। इसका मतलब यह है कि हमारे द्वारा निजी रूप से घोषित वर्ग कोड चलाने के लिए कोई उपयोग नहीं है। जो फिर से इसे बेकार प्रदान करता है। यदि आपके पास पैकेज स्तर पहुंच का मतलब है तो डिफ़ॉल्ट पहुंच के लिए हमें इससे पहले कोई भी कीवर्ड घोषित करने की आवश्यकता नहीं है।
- 1. हम एक ही कक्षा के अंदर एक वर्ग की वस्तु क्यों नहीं घोषित कर सकते हैं?
- 2. कक्षा या इंटरफ़ेस को निजी या संरक्षित एक्सेस संशोधक क्यों नहीं मिल सकते हैं?
- 3. हम स्ट्रेटर पॉइंटर को स्ट्रिंग क्यों नहीं कॉपी कर सकते हैं जब हम सीधे स्ट्रिंग असाइन कर सकते हैं?
- 4. जावा में शीर्ष स्तर की कक्षा स्थिर क्यों नहीं हो सकती है?
- 5. सी # हम स्थिर संपत्ति को ओवरराइड क्यों नहीं कर सकते?
- 6. क्या हम sandcastle तेज कर सकते हैं?
- 7. जावा बीन प्रमाणीकरण: कक्षा-स्तर की सीमा
- 8. सार कक्षाएं, हम निजी मूल्य और var वर्ग के सदस्य की घोषणा क्यों नहीं कर सकते?
- 9. हम जावा में पॉइंटर्स का उपयोग क्यों नहीं कर सकते?
- 10. हम संग्रहित प्रक्रिया से एक शून्य वापस कर सकते हैं
- 11. हम वर्ग स्तर पर var = = new list <string> क्यों घोषित नहीं कर सकते?
- 12. कैसे एक निजी क्षेत्र का उपयोग हाइबरनेट कर सकते हैं?
- 13. हम कक्षा के अंदर नेमस्पेस उपनाम क्यों नहीं घोषित कर सकते हैं?
- 14. क्या हम इमाक्स को चर की परिभाषा ढूंढ सकते हैं?
- 15. हम सिम्युलेटर में पुश अधिसूचना की जांच कर सकते हैं?
- 16. हम मूल्य प्रकार को क्यों लॉक नहीं कर सकते?
- 17. क्या हम एंड्रॉइड में एक फ़ोल्डर एन्क्रिप्ट कर सकते हैं?
- 18. क्या हम स्केल में डीएसएल ऑपरेशन का एक सेट परिभाषित कर सकते हैं जो लिनक्स
- 19. क्या हम स्कैला में उच्च-प्रकार के प्रकार-स्तरीय पहचान फ़ंक्शन को परिभाषित कर सकते हैं?
- 20. क्या हम केवल कुछ डेटा प्रकारों के लिए टेम्पलेट फ़ंक्शन को परिभाषित कर सकते हैं?
- 21. ग्रहण में एक शीर्ष स्तर की कक्षा में एक स्थिर आंतरिक कक्षा को दोबारा कैसे दोहराया जाए?
- 22. मैं कैसे परिभाषित कर सकते हैं एक्सेल
- 23. जावा element.getElementsByTagName शीर्ष पर सीमित करें स्तर
- 24. क्या हम एडाप्टर से startActivityForResult को कॉल कर सकते हैं?
- 25. क्या हम * .dll.config को ऑटोकॉपी कर सकते हैं?
- 26. क्या आप # परिभाषित स्ट्रिंग अक्षर में परिभाषित कर सकते हैं?
- 27. एक चर "निजी" को परिभाषित करने का निर्णय कैसे लेते हैं?
- 28. हम इंटरफेस क्यों कार्यान्वित कर रहे हैं?
- 29. जावा उपवर्ग के नए सिरे से परिभाषित विधि में शीर्ष वर्ग संपत्ति उपयोग नहीं कर सकते
- 30. हम राज्य में किस प्रकार की वस्तुएं रख सकते हैं?
क्या आपका मतलब है कि हम एक शीर्ष स्तर की कक्षा को निजी रूप से परिभाषित नहीं कर सकते हैं? – Joel