कोटलिन नेस्टेड और इनर क्लास

इस लेख में, आप उदाहरणों की मदद से नेस्टेड और आंतरिक कक्षाओं के साथ काम करना सीखेंगे।

कोटलिन नेस्टेड क्लास

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

 क्लास आउटर (… क्लास नेस्टेड (…))

चूँकि नेस्टेड क्लास इसके आउटलिंग क्लास आउटर का सदस्य है, आप क्लास और उसके सदस्यों .तक पहुँचने के लिए नोटेशन का उपयोग कर सकते हैं Nested

उदाहरण: कोटलिन नेस्टेड क्लास

 class Outer ( val a = "Outside Nested class." class Nested ( val b = "Inside Nested class." fun callMe() = "Function call from inside Nested class." ) ) fun main(args: Array) ( // accessing member of Nested class println(Outer.Nested().b) // creating object of Nested class val nested = Outer.Nested() println(nested.callMe()) )

जब आप प्रोग्राम चलाते हैं, तो आउटपुट होगा:

नेस्टेड क्लास के अंदर। नेस्टेड क्लास के अंदर से फंक्शन कॉल।

जावा उपयोगकर्ताओं के लिए

कोटलिन में नेस्टेड क्लास जावा में स्थिर नेस्टेड क्लास के समान है।

जावा में, जब आप किसी अन्य वर्ग के अंदर एक वर्ग की घोषणा करते हैं, तो यह डिफ़ॉल्ट रूप से एक आंतरिक वर्ग बन जाता है। हालांकि कोटलिन में, आपको एक आंतरिक वर्ग बनाने के लिए आंतरिक संशोधक का उपयोग करने की आवश्यकता है जिसके बारे में हम आगे चर्चा करेंगे।

कोटलिन इनर क्लास

कोटलिन में नेस्टेड कक्षाओं में बाहरी वर्ग के उदाहरण तक पहुंच नहीं है। उदाहरण के लिए,

 class Outer ( val foo = "Outside Nested class." class Nested ( // Error! cannot access member of outer class. fun callMe() = foo ) ) fun main(args: Array) ( val outer = Outer() println(outer.Nested().callMe()) )

उपरोक्त कोड संकलित नहीं करेगा क्योंकि हमने नेस्टेड वर्ग के अंदर से बाहरी वर्ग की foo संपत्ति तक पहुंचने का प्रयास किया था।

इस समस्या को हल करने के लिए, आपको आंतरिक वर्ग बनाने के लिए नेस्टेड वर्ग को आंतरिक के साथ चिह्नित करने की आवश्यकता है। भीतरी वर्ग बाहरी वर्ग का संदर्भ लेते हैं, और बाहरी वर्ग के सदस्यों तक पहुँच सकते हैं।

उदाहरण: कोटलिन इनर क्लास

 class Outer ( val a = "Outside Nested class." inner class Inner ( fun callMe() = a ) ) fun main(args: Array) ( val outer = Outer() println("Using outer object: $(outer.Inner().callMe())") val inner = Outer().Inner() println("Using inner object: $(inner.callMe())") )

जब आप प्रोग्राम चलाते हैं, तो आउटपुट होगा:

बाहरी वस्तु का उपयोग करना: बाहर का नस्टेड वर्ग। आंतरिक वस्तु का उपयोग करना: बाहर का नस्टेड वर्ग।

अनुशंसित पढ़ना: बेनामी इनर क्लास

दिलचस्प लेख...