2009-08-29 13 views
10

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

उत्तर

18

अगर मैं एक जावा वर्ग जो पैकेज-निजी ("वर्ग", नहीं "सार्वजनिक वर्ग" के साथ घोषित) है, वहाँ वास्तव में कोई अंतर नहीं है, तो तरीकों के अंदर सार्वजनिक घोषणा की है या संरक्षित या पैकेज-निजी रहे हैं, सही?

शायद शायद तुरंत नहीं। लेकिन यदि आप (या भविष्य में) पैकेज-प्राइवेट क्लास से प्राप्त 'संरक्षित' या 'सार्वजनिक' वर्ग घोषित करते हैं, तो मूल वर्ग के सदस्यों की दृश्यता करें।

जैसा कि @kmccoy बताता है, कक्षा को अंतिम रूप में घोषित करने से उप-वर्गों की संभावना को हटा दिया जाता है।

लेकिन यह वास्तव में केवल खिड़की-ड्रेसिंग है। यदि आप निर्णय लेते हैं कि आपको वास्तव में उप-वर्ग बनाने की आवश्यकता है, तो आप बस final हटा दें ... और फिर आप उस स्थिति में वापस आ गए हैं जहां एक्सेस संशोधक की पसंद मायने रखती है।

आईएमओ, निचली पंक्ति यह है कि आपको सबसे उपयुक्त संशोधक चुनना चाहिए ... भले ही यह अभी आवश्यक नहीं है। यदि कुछ और नहीं है, तो संशोधकों की आपकी पसंद को आपके इरादे को दस्तावेज करना चाहिए जहां अमूर्त सीमाएं हैं।

+0

यदि वर्ग 'अंतिम श्रेणी कुछ क्लास' है तो क्या सदस्य दृश्यता मामला होगा? – kmccoy

+2

यदि अंतिम संशोधक कुछ भविष्य में रिफैक्टरिंग में हटा दिया गया है :) याद रखें यह सॉफ्टवेयर है, "अंतिम" का मतलब यह नहीं है कि "पत्थर में कभी भी बदलाव नहीं करना चाहिए", इसका मतलब है, "इस प्रकार से एक बच्चे वर्ग को लिखा नहीं जा सकता है जैसा लिखा है अभी।" –

4

पैकेज पैकेज के अंदर सार्वजनिक विधियां एक ही पैकेज में कक्षाओं के लिए सार्वजनिक हैं। लेकिन, निजी पैकेज एक ही पैकेज में कक्षाओं द्वारा सुलभ नहीं होंगे।