इस लेख में, आप कोटलिन में सभी 4 दृश्यता संशोधक के बारे में जानेंगे और कैसे वे विभिन्न परिदृश्यों में काम करेंगे।
विजिबिलिटी मॉडिफायर्स वे कीवर्ड होते हैं जो कक्षाओं, ऑब्जेक्ट्स, इंटरफ़ेस, कंस्ट्रक्टर्स, फ़ंक्शंस, प्रॉपर्टीज़ और उनके सेटर्स की विज़िबिलिटी (एक्सेसिबिलिटी) सेट करते हैं। (आप गेटवे के दृश्यता संशोधक को सेट नहीं कर सकते हैं क्योंकि वे हमेशा उसी दृश्यता को संपत्ति के रूप में लेते हैं।
कोटलिन क्लास एंड ऑब्जेक्ट्स लेख में, आपने दृश्यता संशोधक public
और private
संक्षिप्त में सीखा । आप दो अधिक दृश्यता संशोधक बारे में सीखना होगा protected
और internal
(के रूप में भी public
और private
विस्तार से)।
दृश्यता संशोधक पैकेज के अंदर
एक पैकेज संबंधित कार्यों, गुणों और वर्गों, वस्तुओं और इंटरफेस का एक सेट आयोजित करता है। अनुशंसित पढ़ना: कोटलिन पैकेज
संशोधन करनेवाला | विवरण |
---|---|
सह लोक | घोषणाएं हर जगह दिखाई देती हैं |
निजी | घोषणा के साथ फ़ाइल के अंदर दिखाई दे रहा है |
अंदर का | एक ही मॉड्यूल के अंदर दिखाई दे रहा है (कोटलिन फ़ाइलों का एक सेट) |
संरक्षित | संकुल के लिए उपलब्ध नहीं (उपवर्गों के लिए प्रयुक्त) |
नोट: यदि दृश्यता संशोधक निर्दिष्ट नहीं है, तो यह public
डिफ़ॉल्ट रूप से है।
आइए एक उदाहरण लेते हैं:
// फ़ाइल नाम: hello.kt पैकेज टेस्ट फन फंक्शन 1 () (//) सार्वजनिक रूप से डिफ़ॉल्ट और हर जगह दिखाई देता है निजी मज़ा फ़ंक्शन 2 () () // हेल्लो के अंदर दिखाई दे रहा है। आंतरिक मज़ा फ़ंक्शन 3 () () // अंदर दिखाई देता है एक ही मॉड्यूल var name = "Foo" // हर जगह दिखाई देता है () = फ़ील्ड // hello.kt के अंदर दिखाई देता है (अपनी संपत्ति के समान) निजी सेट (मान) (// hello.kt फ़ील्ड = मान के अंदर दिखाई देता है) निजी वर्ग class1 () // हेलो.कट के अंदर दिखाई दे रहा है
विजिबिलिटी मॉडिफायर्स इनसाइड क्लासेस और इंटरफेसेस
क्लास के अंदर घोषित सदस्यों (कार्यों, गुणों) के लिए दृश्यता संशोधक कैसे काम करता है:
संशोधन करनेवाला | विवरण |
---|---|
सह लोक | किसी भी ग्राहक को दिखाई दे सकता है जो घोषित वर्ग को देख सकता है |
निजी | केवल कक्षा के अंदर दिखाई दे रहा है |
संरक्षित | वर्ग और उसके उपवर्गों के अंदर दिखाई देता है |
अंदर का | मॉड्यूल के अंदर किसी भी ग्राहक को दिखाई दे रहा है जो घोषित वर्ग को देख सकता है |
नोट: यदि आप protected
अपनी दृश्यता को निर्दिष्ट किए बिना किसी सदस्य को व्युत्पन्न वर्ग में ओवरराइड करते हैं, तो इसकी दृश्यता भी होगी protected
।
आइए एक उदाहरण लेते हैं:
ओपन क्लास बेस () (var a = 1 // पब्लिक बाय डिफॉल्ट प्राइवेट var b = 2 // प्राइवेट टू बेस क्लास प्रोटेक्टेड ओपन वैल c = 3 // बेस और डिराइव्ड क्लास इंटरनल वैल d = 4 // दिखाई दे रहा है बेस और डिराइव्ड क्लास के लिए समान मॉड्यूल संरक्षित फन ई () () // दिखाई दे रहा है। डिराइव्ड: बेस क्लास के बेस () (// ए, सी, डी, और ई) दिखाई दे रहे हैं // बी दिखाई नहीं देता है ओवरराइड वैल c = 9 // c संरक्षित है) मजेदार मुख्य (args: Array) (वैल बेस = बेस () // base.a और base.d दृश्यमान हैं। base.b, base.c और base .e () दृश्यमान नहीं हैं वाल व्युत्पन्न = व्युत्पन्न () // व्युत्पन्न। दृश्यमान नहीं है)
एक कंस्ट्रक्टर की दृश्यता में परिवर्तन
डिफ़ॉल्ट रूप से, एक कंस्ट्रक्टर की दृश्यता होती है public
। हालाँकि, आप इसे बदल सकते हैं। उसके लिए, आपको constructor
कीवर्ड को स्पष्ट रूप से जोड़ना होगा ।
public
नीचे दिए गए उदाहरण में कंस्ट्रक्टर डिफ़ॉल्ट रूप से है:
क्लास टेस्ट (वैल a: इंट) (// कोड)
यहां बताया गया है कि आप इसकी दृश्यता को कैसे बदल सकते हैं।
क्लास टेस्ट प्राइवेट कंस्ट्रक्टर (वैल ए: इंट) (// कोड)
यहाँ निर्माता है private
।
नोट: कोटलिन में, स्थानीय कार्यों, चर और वर्गों में दृश्यता संशोधक नहीं हो सकते हैं।