मुझे नहीं लगता कि यह स्विफ्ट 3 में सीधे संभव है यहां सबसे अच्छा कामकाज है जिसके साथ मैं आ सकता हूं:
class Child : Parent {
override public var file: PFFile? {
get { return nil }
set { }
}
func exampleFunction() {
print(super.PFFile?.description) // Use like this
print(PFFile?.description) // Don't do this
//This ^^^ will ALWAYS return nil for PFFile
}
}
यह एक हैक की तरह है, लेकिन यह लगभग वही है जो आप चाहते हैं। यह बाहरी दुनिया से चर को पूरी तरह छुपा नहींता है, लेकिन यह नपुंसक बनाता है। जब आप file
को आजमाते हैं और एक्सेस करते हैं तो आपको हमेशा nil
मिलता है, और जब आप इसे फ़ाइल करने के लिए मान निर्दिष्ट करते हैं और असाइन करते हैं तो यह कुछ भी नहीं करता है। तो बाहरी दुनिया अभी भी जानता है कि Child
में file
की संपत्ति PFFile?
है, लेकिन यह इसके बारे में कुछ भी नहीं कर सकती है।
अनिवार्य रूप से, file
एक आकर्षक फिल्म स्टार की तरह है। आप उन्हें पत्र भेज सकते हैं, अपनी फेसबुक दीवार पर पोस्ट कर सकते हैं, उनके इंस्टाग्राम फ़ीड पर टिप्पणी कर सकते हैं, लेकिन वे आपको कभी जवाब नहीं देंगे। आप जानते हैं कि वे कौन हैं, और वे क्या दिखते हैं, लेकिन आप इसके बारे में कुछ भी नहीं कर सकते हैं।
फिर, अंदर Child
आप MUST उपयोग super.file
हर जगह आप का उपयोग Parent
के file
संपत्ति। यदि आप file
या self.file
का उपयोग करते हैं तो आप नपुंसक संस्करण से बातचीत करने की कोशिश करेंगे, और आप कुछ भी नहीं करेंगे और हर बार कुछ भी नहीं प्राप्त करेंगे! मैंने इस उपयोग के उदाहरण के रूप में exampleFunction()
शामिल किया है। (मैंने प्रॉपर्टी को PFFile
पर बनाया है, बस मान लें कि यह String
है)
'सार्वजनिक' संशोधक को हटा रहा है? – NeverHopeless
दुर्भाग्य से मैं पेरेंट क्लास को संशोधित नहीं कर सकता –