0Pricing
Swift Academy · درس

وراثة الأصناف والكلمة المفتاحية super

تعلّموا إنشاء الأصناف الفرعية واستدعاء super.init() وتوسيع سلوك الصنف الفائق.

وراثة الأصناف والكلمة المفتاحية super درس مجاني في Swift Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Swift Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Swift Academy 4 دروس في المجموع.

مرحبًا

تدعم الأصناف الوراثة، إذ يمكن لصنف فرعي توسيع صنف أساسي أو تخصيصه. ويتيح ذلك إعادة استخدام التعليمات البرمجية وتعدد الأشكال، وهما من الركائز الأساسية للتصميم كائني التوجه.

تعريف صنف فرعي

```swift class Animal { var name: String init(name: String) { self.name = name } func speak() { print("...") } } class Dog: Animal { func fetch() { print("\(name) fetches!") } } let d = Dog(name: "Rex") d.speak() // "..." d.fetch() // "Rex fetches!" ```

super.init() — استدعاء مطلوب

```swift class Vehicle { var speed: Double init(speed: Double) { self.speed = speed } } class Car: Vehicle { var brand: String init(brand: String, speed: Double) { self.brand = brand super.init(speed: speed) // must call super } } ```

التهيئة على مرحلتين

قواعد التهيئة على مرحلتين في Swift: 1. يجب تعيين جميع الخصائص المخزنة *الخاصة بالصنف* قبل استدعاء `super.init()` 2. بعد `super.init()`، يمكنك تخصيص الخصائص الموروثة يمنع ذلك استخدام ذاكرة لم تتم تهيئتها.

استدعاء دوال الصنف الأب

```swift class Shape { func draw() { print("Drawing shape") } } class Circle: Shape { override func draw() { super.draw() // call parent implementation print("Drawing circle") } } ```

وراثة الخصائص

ترث الفئات الفرعية جميع خصائص الفئة الأساسية: ```swift class Person { var name: String = "" var age: Int = 0 } class Employee: Person { var company: String = "" } let e = Employee() e.name = "Alice" e.company = "Acme" ```

المهيئات الأساسية مقابل المهيئات المريحة

• *Designated* — يهيّئ جميع الخصائص بالكامل؛ ويستدعي `super.init()` • *Convenience* — يفوّض التهيئة إلى مهيئ آخر باستخدام `self.init()` ```swift convenience init(name: String) { self.init(name: name, age: 0) // delegates to designated } ```

required init

ضع علامة `required` على مهيئ لإجبار جميع الفئات الفرعية على تطبيقه: ```swift class Base { required init(id: Int) { ... } } class Sub: Base { required init(id: Int) { super.init(id: id) } } ``` يُستخدم هذا عادةً عندما تحتاج دالة مصنع إلى إنشاء مثيلات عبر بروتوكول.

هرمية الفئات والنوع

```swift let a: Animal = Dog(name:"Buddy") print(a is Dog) // true print(a is Animal) // true ``` العلاقة بين `Dog` و`Animal` هي علاقة IS-A، أي إن مثيلات الفئة الفرعية تستوفي متطلبات نوع الفئة الأساسية.

الوراثة الأحادية

تدعم فئات Swift الوراثة *الأحادية* فقط، أي فئة أساسية واحدة. لكن يمكن للفئة التوافق مع عدة بروتوكولات: ```swift class MyVC: UIViewController, UITableViewDelegate, UITableViewDataSource { } ``` البروتوكولات هي آلية Swift لتطبيق الوراثة المتعددة للسلوك.

تحقق سريع

في مهيئ أساسي لفئة فرعية، متى يجب استدعاء `super.init()`؟

مراجعة

أهم النقاط: • أنشئ فئة فرعية باستخدام `class Sub: Super` • استدعِ `super.init()` بعد تعيين خصائص الفئة نفسها • التهيئة على مرحلتين: خصائص الفئة نفسها أولًا، ثم الفئة الأساسية • يستدعي `super.method()` تطبيق الفئة الأب • تستخدم Swift الوراثة الأحادية؛ استخدم البروتوكولات لتطبيق سلوك متعدد التالي: override وfinal ومنع إنشاء الفئات الفرعية.

الأسئلة الشائعة

هل درس «وراثة الأصناف والكلمة المفتاحية super» مجاني؟

نعم — نص درس «وراثة الأصناف والكلمة المفتاحية super» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Swift Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Swift Academy 4 دروس في المجموع.

ماذا ستتعلم في «وراثة الأصناف والكلمة المفتاحية super»؟

تعلّموا إنشاء الأصناف الفرعية واستدعاء super.init() وتوسيع سلوك الصنف الفائق. تتمرن على Swift Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Swift Academy؟

لا تُشترط خبرة سابقة. Swift Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «وراثة الأصناف والكلمة المفتاحية super»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Swift Academy هذا؟

نعم. كل درس في Swift Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. وراثة الأصناف والكلمة المفتاحية super
  2. ‏override وfinal ومنع إنشاء الأصناف الفرعية
  3. تحويل الأنواع: ‏is وas? وas! وas
  4. المُنهِيات ودورة حياة الذاكرة
← العودة إلى Swift Academy