Swift में `open` कीवर्ड का क्या अर्थ है और यह `public` से कैसे अलग है?
सभी को नमस्ते! मैंने हाल ही में Swift सीखना शुरू किया है और मुझे एक्सेस मॉडिफायर को लेकर भ्रम हो गया है। डॉक्यूमेंटेशन में मैंने `public`, `internal`, `fileprivate` और `private` के बारे में पढ़ा, लेकिन फिर मुझे `open` मिला।
मैं समझता हूँ कि `public` क्लास या method को दूसरे module से एक्सेस करने योग्य बनाता है। लेकिन फिर `open` की आवश्यकता क्यों है? क्या `public` भी वही नहीं करता?
यहाँ एक उदाहरण है: मैंने अपना खुद का framework बनाया और चाहता हूँ कि उपयोगकर्ता न केवल मेरी क्लास का उपयोग करें बल्कि उससे इनहेरिट भी कर सकें। अगर मैं `public` लगाता हूँ, तो क्लास दिखाई देगी, लेकिन compiler उससे इनहेरिट करने की अनुमति नहीं देगा। अगर मैं `open` लगाता हूँ, तो इनहेरिटेंस की अनुमति है। ऐसा क्यों?
मुझे यह भी भ्रमित करता है कि `open` केवल क्लासेस और क्लास के members पर लागू किया जा सकता है। जहाँ तक मैं समझता हूँ, structures और protocols के लिए `open` का उपयोग नहीं किया जाता। क्या यह सही है?
और एक और सवाल: अगर मैं एक सामान्य एप्लिकेशन (framework नहीं) लिख रहा हूँ, तो क्या मुझे `open` का उपयोग करने की आवश्यकता है? या `public` पर्याप्त है?
उदाहरणों के साथ स्पष्टीकरण के लिए आभारी रहूँगा, क्योंकि आधिकारिक डॉक्यूमेंटेशन में...