2009-06-20 17 views
60

ऑब्जेक्ट उन्मुख प्रोग्रामिंग में सार्वजनिक, निजी और संरक्षित क्या हैं?वस्तु उन्मुख प्रोग्रामिंग में सार्वजनिक, निजी और संरक्षित क्या हैं?

+0

+1, उन चीजों में से एक जो मुझे – fig

+0

ग्रोक करने में थोड़ा मुश्किल मिला, क्या मुझे अंतिम जोड़ना चाहिए? –

उत्तर

106

वे पहुँच संशोधक कर रहे हैं और हमें Encapsulation लागू करने में सहायता (या जानकारी छुपा)। वे संकलक को बताते हैं कि अन्य वर्गों को फ़ील्ड या परिभाषित विधि को एक्सेस करना चाहिए।

private - केवल वर्तमान वर्ग के पास फ़ील्ड या विधि तक पहुंच होगी।

protected - केवल वर्तमान वर्ग और इस वर्ग के उपवर्गों (और कभी कभी भी एक ही पैकेज वर्ग) क्षेत्र या विधि के लिए उपयोग होगा।

public - कोई भी वर्ग फ़ील्ड को संदर्भित कर सकता है या विधि को कॉल कर सकता है।

यह मानता है कि इन कीवर्ड का उपयोग किसी वर्ग परिभाषा के भीतर किसी फ़ील्ड या विधि घोषणा के हिस्से के रूप में किया जाता है।

+2

ध्यान दें कि एक ही पैकेज के जावा सदस्यों में संरक्षित सदस्यों तक पहुंच सकते हैं –

+0

हां, और जावा में चौथा एक्सेस संशोधक भी है जो खाली स्ट्रिंग है। किसी भी एक्सेस मॉडिफायर को किसी भी पैकेज-स्तरीय वर्ग से एक्सेस की अनुमति नहीं दी जाएगी। –

+0

मुझे "कंपाइलर" भाग पसंद है, क्योंकि ज्यादातर भाषाओं को मैं जानता हूं कि सभी कार्यों/कक्षाओं को आसानी से रनटाइम पर पहुंचा जा सकता है उदाहरण के लिए .NET में प्रतिबिंब के माध्यम से। इसलिए मैं कहता हूं कि ये एक्सेस संशोधक मूल रूप से प्रोग्रामर के लिए कुछ चीजों को छिपाकर उसी कोड के साथ काम करने वाले अन्य प्रोग्रामर को मार्गदर्शन करने में मदद करते हैं। – merkuro

1

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

3

वे वास्तव में अवधारणाएं नहीं हैं बल्कि सी ++ और जावा जैसी लोकप्रिय भाषाओं में होने वाले विशिष्ट कीवर्ड हैं (कुछ अलग अर्थशास्त्र के साथ)।

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

व्यापक रूप से बोलते हुए, सार्वजनिक मतलब है कि सभी को एक्सेस करने की अनुमति है, निजी माध्यम है कि केवल उसी वर्ग के सदस्यों को एक्सेस करने की अनुमति है, और संरक्षित साधन है कि उप-वर्गों के सदस्यों को भी अनुमति है। हालांकि, प्रत्येक भाषा अपनी खुद की चीजें जोड़ती है। उदाहरण के लिए, सी ++ आपको गैर-सार्वजनिक रूप से प्राप्त करने की अनुमति देता है। जावा में, वहाँ भी एक डिफ़ॉल्ट (पैकेज) पहुंच का स्तर है, और आंतरिक कक्षाओं के बारे में नियम हैं, आदि

0

ऑब्जेक्ट उन्मुख प्रोग्रामिंग में इसे समेटने के लिए, सब कुछ कक्षाओं और वस्तुओं में मॉडलिंग किया गया है। कक्षाओं में गुण और विधियां हैं। सार्वजनिक, निजी और संरक्षित कीवर्ड का उपयोग अन्य वर्गों या अन्य डीडी या अन्य अनुप्रयोगों से किसी वर्ग के इन सदस्यों (गुणों और विधियों) तक पहुंच निर्दिष्ट करने के लिए किया जाता है।

4

सभी तीन एक श्रेणी में उपयोग किए जाने वाले संशोधक और कीवर्ड का उपयोग कर रहे हैं। सार्वजनिक रूप से घोषित कुछ भी कक्षा के भीतर या कक्षा के बाहर किसी भी वस्तु द्वारा उपयोग किया जा सकता है, निजी में चर केवल कक्षा के भीतर वस्तुओं द्वारा उपयोग किया जा सकता है और सीधे पहुंच के माध्यम से बदला नहीं जा सकता है (क्योंकि यह मित्र कार्य जैसे कार्यों के माध्यम से चैनफ कर सकता है)। संरक्षित अनुभाग के तहत परिभाषित कुछ भी कक्षा और उनके बस व्युत्पन्न वर्ग द्वारा उपयोग किया जा सकता है।

0

इन निजी, सार्वजनिक और संरक्षित को एक्सेस विनिर्देशक कहा जाता है।

"सार्वजनिक" में कक्षा के अंदर या बाहर के सभी सदस्य चर का उपयोग करते हैं।

निजी में केवल कक्षा के अंदर के सदस्य चर का उपयोग कर सकते हैं।

कक्षा में सभी सदस्यों को "संरक्षित" में और कक्षा के सदस्यों (उप वर्ग) के सदस्य अपने मूल वर्ग से व्युत्पन्न चर के उपयोग कर सकते हैं।

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