Avatar ·

ماذا تعني الكلمة المفتاحية `open` في Swift وكيف تختلف عن `public`؟

مرحباً بالجميع! بدأت تعلم Swift مؤخراً وواجهت ارتباكاً عند العمل مع معدّلات الوصول. في توثيق Apple مكتوب أن `open` هو أعلى مستوى وصول، لكنني لا أفهم تماماً الفرق بينه وبين `public`. أنا أكتب مكتبة صغيرة للعمل مع الشبكة. إليك مثال على كلاسي: ```swift public class NetworkManager { public func fetchData() { print("Fetching data...") } } ``` كل شيء يعمل، لكنني قرأت أنه للكلاسات التي يمكن توريثها من وحدة أخرى، يجب استخدام `open`. جربت استبدال `public` بـ `open`: ```swift open class NetworkManager { open func fetchData() { print("Fetching data...") } } ``` لم ألاحظ فرقاً في السلوك. أرجو التوضيح: 1. ما الفرق الحقيقي بين `open` و `public`؟ 2. متى يجب استخدام `open` ومتى يكفي `public`؟ 3. لماذا أدخلت Apple الكلمة المفتاحية `open` أصلاً إذا كان هناك `public`؟ سأكون ممتناً للمساعدة.