Swift Language
पहुँच नियंत्रण
खोज…
वाक्य - विन्यास
- निजी वर्ग की परियोजना
- चलो कार = कार ("फोर्ड", मॉडल: "एस्केप") // डिफ़ॉल्ट आंतरिक
- पब्लिक एनुम शैली
- निजी फंक गणना
- आंतरिक कवक setupView ओवरराइड करें ()
- निजी (सेट) var क्षेत्र = 0
टिप्पणियों
- मूल टिप्पणी:
नीचे उच्चतम पहुँच (सबसे कम-प्रतिबंधात्मक) से निम्नतम पहुँच (सबसे अधिक प्रतिबंधात्मक) तक तीन पहुँच स्तर हैं
सार्वजनिक पहुंच मॉडल के भीतर किसी भी फ़ाइल से कक्षाओं, संरचनाओं, चर, आदि तक पहुंच की अनुमति देती है, लेकिन मॉड्यूल के बाहर और अधिक महत्वपूर्ण बात अगर बाहरी फ़ाइल सार्वजनिक एक्सेस कोड वाले मॉड्यूल को आयात करती है। जब आप एक रूपरेखा बनाते हैं तो सार्वजनिक पहुंच का उपयोग करना लोकप्रिय होता है।
आंतरिक पहुँच केवल संस्थाओं के मॉड्यूल के साथ फ़ाइलों का उपयोग करने की अनुमति देता है। सभी संस्थाओं में डिफ़ॉल्ट रूप से (कुछ अपवादों के साथ) आंतरिक स्तर होता है।
निजी एक्सेस इकाई को उस फ़ाइल के बाहर उपयोग करने से रोकता है।
- उपवर्ग:
एक उपवर्ग में अपने सुपरक्लास की तुलना में अधिक पहुंच नहीं हो सकती है।
- गेट्टर और सेटर
यदि संपत्ति का सेटर निजी है तो गेटटर आंतरिक है (जो डिफ़ॉल्ट है)। इसके अलावा, आप गटर और सेटर दोनों के लिए पहुँच स्तर प्रदान कर सकते हैं। ये सिद्धांत सदस्यता के लिए भी लागू होते हैं
- सामान्य टिप्पणी:
अन्य इकाई प्रकारों में शामिल हैं: शुरुआती, प्रोटोकॉल, एक्सटेंशन, जेनरिक, और टाइप उपनाम
एक संरचना का उपयोग करके मूल उदाहरण
स्विफ्ट 3 में कई एक्सेस-लेवल हैं। यह उदाहरण open
अलावा उन सभी का उपयोग करता है:
public struct Car {
public let make: String
let model: String //Optional keyword: will automatically be "internal"
private let fullName: String
fileprivate var otherName: String
public init(_ make: String, model: String) {
self.make = make
self.model = model
self.fullName = "\(make)\(model)"
self.otherName = "\(model) - \(make)"
}
}
मान लें कि myCar
को इस तरह शुरू किया गया था:
let myCar = Car("Apple", model: "iCar")
Car.make (सार्वजनिक)
print(myCar.make)
यह प्रिंट हर जगह काम करेगा, जिसमें Car
आयात करने वाले लक्ष्य भी शामिल हैं।
Car.model (आंतरिक)
print(myCar.model)
यह संकलित करेगा यदि कोड Car
के समान लक्ष्य में है।
Car.otherName (फ़ाइलपार्टी)
print(myCar.otherName)
यह केवल तभी काम करेगा जब कोड Car
के समान फ़ाइल में होगा।
Car.fullName (निजी)
print(myCar.fullName)
यह स्विफ्ट 3 में काम नहीं करेगा। private
संपत्तियों को केवल एक ही struct
/ class
भीतर पहुँचा जा सकता है।
public struct Car {
public let make: String //public
let model: String //internal
private let fullName: String! //private
public init(_ make: String, model model: String) {
self.make = make
self.model = model
self.fullName = "\(make)\(model)"
}
}
यदि इकाई में कई संबद्ध एक्सेस स्तर हैं, तो स्विफ्ट सबसे कम स्तर की पहुंच के लिए दिखता है। यदि कोई निजी चर सार्वजनिक वर्ग में मौजूद है, तो चर को अभी भी निजी माना जाएगा।
उपवर्ग उदाहरण
public class SuperClass {
private func secretMethod() {}
}
internal class SubClass: SuperClass {
override internal func secretMethod() {
super.secretMethod()
}
}
गेटर्स एंड सेटर्स उदाहरण
struct Square {
private(set) var area = 0
var side: Int = 0 {
didSet {
area = side*side
}
}
}
public struct Square {
public private(set) var area = 0
public var side: Int = 0 {
didSet {
area = side*side
}
}
public init() {}
}