2010-01-12 7 views
11

मेरे अवलोकन के लिए जब कक्षा में डिफ़ॉल्ट पहुंच संशोधक है, इसमें सार्वजनिक विधियों का उपयोग क्या है। जावा कंपाइलर डिफ़ॉल्ट वर्ग में सार्वजनिक तरीकों का उपयोग बंद कर सकता था। क्या इसके लिए कोई कारण है?कक्षा में डिफ़ॉल्ट पहुंच संशोधक होने पर सार्वजनिक विधियों का उपयोग क्या होता है?

उत्तर

7

एक कारण: यदि आपकी कक्षा कुछ इंटरफ़ेस लागू करती है (या अमूर्त सार्वजनिक विधियों के साथ कुछ अमूर्त वर्ग को बढ़ाती है), तो आप उन लागू विधियों की दृश्यता को कम नहीं कर सकते हैं।

+3

सार्वजनिक उप-वर्ग भी सार्वजनिक रूप से विधियों का वारिस करेंगे। –

6

गैर-सार्वजनिक वर्ग सार्वजनिक इंटरफ़ेस को कार्यान्वित कर सकता है। इसका मतलब यह होगा कि पैकेज के बाहर की कक्षाएं इस वर्ग का उदाहरण नहीं बना सकती हैं या उस प्रकार के संदर्भ नहीं बना सकती हैं, लेकिन अगर वे एक उदाहरण पास करते हैं तो भी वे इसके तरीकों का आह्वान कर पाएंगे।

उदाहरण के लिए, एक सार्वजनिक फैक्ट्री क्लास अपने पैकेज में एक गैर-सार्वजनिक वर्ग का उदाहरण बना सकती है और इसे वापस कर सकती है।

+0

यहां तक ​​कि एक गैर-सार्वजनिक इंटरफ़ेस में सार्वजनिक विधियां भी हैं। –

0

यह एक में पैक सुरक्षा और उपयोगिता का एक सुंदर संयोजन है।

मैं एक क्लास को डिफ़ॉल्ट एक्सेस के साथ चिह्नित करूंगा यदि मैं चाहता हूं कि यह एक अच्छी तरह से, पैकेज एक्सेस (ताकि कोई अन्य पैकेज इसका उपयोग न कर सके या बेहतर कोड बदल सके) और एक विधि को सार्वजनिक रूप से चिह्नित कर रहा हो, मैं विधि बना रहा हूं पैकेज के बावजूद अन्य सभी वर्गों के लिए सुलभ।

इससे मदद कैसे होती है? एक वर्ग जो सभी जटिल कोड कार्यान्वयन करने के लिए पर्याप्त सुरक्षित है और उपयोगकर्ता को आउटपुट देने के लिए पर्याप्त उपयोग योग्य है जो इसका उपयोग करना चाहता है।

कोई भी इसका उपयोग कैसे कर सकता है? वैसे आप सार्वजनिक कक्षा बनाकर इसका उपयोग करने में मदद करने के लिए कोड लिखते हैं जो इस डिफ़ॉल्ट वर्ग को बढ़ाता है। आप इस सार्वजनिक सबक्लास को किसी भी पैकेज (पाठ्यक्रम के आयात के बाद) में तत्काल स्थापित करते हैं और इसमें सभी विधियों को सार्वजनिक चिह्नित किया गया है।

आपके पास एक कक्षा है जो आपका जादू करता है जो हर कोई किसी और को यह बताए बिना कि आप इसे कैसे पूरा कर सकते हैं!

संबंधित मुद्दे