संभव डुप्लिकेट:
Why can't I have protected interface members?इंटरफ़ेस सदस्यों के पास कोई एक्सेस संशोधक क्यों नहीं है?
शीर्षक के रूप में, सी # में। क्या कोई संभावना नहीं है कि कोई संरक्षित या आंतरिक इंटरफ़ेस रखना चाहें?
संभव डुप्लिकेट:
Why can't I have protected interface members?इंटरफ़ेस सदस्यों के पास कोई एक्सेस संशोधक क्यों नहीं है?
शीर्षक के रूप में, सी # में। क्या कोई संभावना नहीं है कि कोई संरक्षित या आंतरिक इंटरफ़ेस रखना चाहें?
देख क्योंकि इंटरफ़ेस 'बाहर की दुनिया के लिए एक दृश्य' कच्चे तेल संदर्भ में है और बाद से यह बाहर की दुनिया के लिए है, वहाँ कोई बना अपने सदस्यों की रक्षा या निजी स्थान है।
या दूसरे शब्दों में, यह अनुबंध बाहरी दुनिया के साथ है जो निर्दिष्ट करता है कि इस इंटरफेस को लागू करने वाली कक्षा चीजों का एक निश्चित सेट करता है। तो, इसका कुछ हिस्सा छुपाएं समझ में नहीं आता है।
हालांकि, इंटरफेस में protected
या internal
आदि जैसे एक्सेस विनिर्देशक हो सकते हैं। इस प्रकार 'बाहरी दुनिया' को 'पूरी बाहरी दुनिया' के उप-समूह में सीमित कर दिया गया है।
क्या होगा यदि आप एक सार्वजनिक वर्ग को एक आंतरिक इंटरफ़ेस को कार्यान्वित करना चाहते हैं, लेकिन केवल कुछ इंटरफ़ेस सदस्यों को सार्वजनिक रूप से उजागर करते समय, उस इंटरफ़ेस के सदस्यों को आंतरिक रूप से बेनकाब करना चाहते हैं? मुझे आश्चर्य है कि माइक्रोसॉफ्ट ने इसे क्यों मना कर दिया होगा। – Panzercrisis
इंटरफ़ेस सदस्य हमेशा सार्वजनिक होते हैं क्योंकि इंटरफ़ेस का उद्देश्य अन्य प्रकारों को कक्षा या संरचना तक पहुंचने में सक्षम बनाना है। इंटरफ़ेस सदस्यों पर कोई एक्सेस संशोधक लागू नहीं किया जा सकता है।
सभी इंटरफ़ेस विधियां सार्वजनिक हैं। आप इंटरफ़ेस में एक्सेस संशोधक नहीं बना सकते हैं। यदि आप एक का उपयोग करना चाहते हैं, तो सार वर्ग का उपयोग करें।
इंटरफेस कोडिंग अनुबंध हैं, यही कारण है कि यह किसी भी एक्सेस संशोधक को अन्यथा इसके विधि हस्ताक्षर में सार्वजनिक अनुमति नहीं देगा। लेकिन एक इंटरफ़ेस आंतरिक हो सकता है लेकिन निजी या संरक्षित नहीं है, आंतरिक असेंबली के भीतर पहुंच की अनुमति देता है जो पूरी तरह ठीक है।
यह इंटरफ़ेस की प्रकृति के कारण है। परिभाषा के अनुसार एक इंटरफेस एक विनिर्देश है। .NET विनिर्देशों में एक नियम यह निर्देश देता है कि एक इंटरफ़ेस लागू करने वाली कक्षा को उस इंटरफ़ेस के सभी सदस्यों को लागू करना होगा। अब यदि हम एक सदस्य को निजी चिह्नित करते हैं, तो कार्यान्वयन वर्ग उस विशेष सदस्य को लागू नहीं कर सकता है।
क्या इंटरफ़ेस के पूरे बिंदु को उस तरह की हार नहीं होगी? – Mehrdad