जावा में निजी दृश्यता के शब्दार्थ को वस्तु स्तर के बजाय कक्षा स्तर पर क्यों रखा गया है, इस सवाल पर मेरे 2 सेंट।
मैं कहूंगा कि सुविधा यहां महत्वपूर्ण है। वास्तव में, ऑब्जेक्ट स्तर पर एक निजी दृश्यता ने ओपी द्वारा चित्रित परिदृश्य में अन्य वर्गों (जैसे एक ही पैकेज में) के तरीकों को उजागर करने के लिए मजबूर किया होगा।
सच में, मैं न तो मनगढ़ंत कर पा रहा था और न ही ऐसा उदाहरण खोज पा रहा था कि कक्षा-निजी स्तर पर दृश्यता (जैसे जावा द्वारा प्रस्तुत) वस्तु-निजी स्तर पर दृश्यता की तुलना में कोई समस्या पैदा करे।
कहा कि, दृश्यता नीतियों की अधिक बारीक प्रणाली के साथ प्रोग्रामिंग भाषाएं वस्तु स्तर और वर्ग स्तर पर वस्तु दृश्यता दोनों को वहन कर सकती हैं।
उदाहरण के लिए , एफिल , चयनात्मक निर्यात प्रदान करता है: आप अपनी पसंद के किसी भी वर्ग को {NONE} (ऑब्जेक्ट-प्राइवेट) से {Any} (सार्वजनिक के समतुल्य, और डिफ़ॉल्ट), से {PERSON} तक किसी भी वर्ग सुविधा का निर्यात कर सकते हैं (वर्ग-निजी, ओपी का उदाहरण देखें), वर्गों के विशिष्ट समूहों को {PERSON, BANK}।
यह टिप्पणी करना भी दिलचस्प है कि एफिल में आपको अन्य वर्गों को इसे असाइन करने से रोकने के लिए एक विशेषता को निजी बनाने और एक लिखने वाले की आवश्यकता नहीं है। एफिल में सार्वजनिक विशेषताएँ डिफ़ॉल्ट रूप से केवल-पढ़ने के लिए सुलभ मोड में हैं, इसलिए आपको उनके मूल्य को वापस करने के लिए बस एक गेटर की आवश्यकता नहीं है।
बेशक आपको अभी भी विशेषता सेट करने के लिए एक सेटर की आवश्यकता है, लेकिन आप इसे उस विशेषता के लिए "असाइनर" के रूप में परिभाषित करके छिपा सकते हैं। यदि आप चाहें, तो सेटर इनवोकेशन के बजाय अधिक सुविधाजनक असाइनमेंट ऑपरेटर का उपयोग करने की अनुमति देता है।