Swift Academy · درس

‏override وfinal ومنع إنشاء الأصناف الفرعية

تعلّموا إعادة تعريف الأساليب والخصائص وإغلاق الأصناف باستخدام final.

الدرس 2 من 412 خطوة

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

مرحبًا

تتيح الكلمة المفتاحية `override` للفئات الفرعية استبدال تطبيقات الفئة الأساسية. وتمنع `final` إجراء تجاوز إضافي أو إنشاء فئات فرعية، مما يحمي عقد API الخاص بك.

دوال override

```swift class Animal { func speak() { print("...") } } class Cat: Animal { override func speak() { print("Meow") } } Cat().speak() // "Meow" ``` الكلمة المفتاحية `override` إلزامية؛ إذ يرفض المصرّف حجب الأعضاء عن طريق الخطأ.

خصائص override

```swift class Shape { var area: Double { 0 } } class Square: Shape { var side: Double init(_ s: Double) { side = s } override var area: Double { side * side } } print(Square(4).area) // 16 ```

استدعاء super في override

```swift class Logger { func log(_ msg: String) { print("[LOG] \(msg)") } } class TimedLogger: Logger { override func log(_ msg: String) { print(Date(), terminator: " ") super.log(msg) } } ```

دوال وخصائص final

ضع علامة `final` على دالة أو خاصية لمنع تجاوزها: ```swift class BankAccount { final func transfer(amount: Double) { ... } // cannot override var balance: Double = 0 } ```

فئات final

ضع علامة `final` على الفئة بأكملها لمنع إنشاء فئات فرعية منها: ```swift final class Singleton { static let shared = Singleton() private init() {} } // class Sub: Singleton { } ❌ ``` تتيح `final` أيضًا إجراء تحسينات؛ إذ يمكن للمصرّف استدعاء الدوال بطريقة ثابتة.

لماذا نستخدم final؟

فوائد `final`: 1. الأداء: استدعاء ثابت بدلًا من البحث في جدول الدوال الافتراضية 2. الأمان: فرض عقد API، فلا تستطيع الفئات الفرعية الإخلال بالثوابت 3. التوثيق: توضح أن الفئة لم تُصمَّم للوراثة

تجاوز الخصائص المحسوبة

```swift class Vehicle { var description: String { "Vehicle" } } class Tesla: Vehicle { override var description: String { "Tesla - " + super.description } } print(Tesla().description) // "Tesla - Vehicle" ```

تجاوز مراقبي الخصائص

```swift class A { var x = 0 } class B: A { override var x: Int { didSet { print("B.x changed to \(x)") } } } var b = B() b.x = 5 // "B.x changed to 5" ```

منع التجاوز غير المقصود

من دون `override`، يؤدي حجب العضو عن طريق الخطأ إلى خطأ في الترجمة: ```swift class Parent { func greet() { } } class Child: Parent { func greet() { } // ❌ must write 'override' } ``` يحمي هذا من الأخطاء الصامتة عند تطور واجهات API للفئة الأب.

تحقق سريع

ما الكلمة المفتاحية التي تمنع إنشاء فئات فرعية من فئة؟

مراجعة

أهم النقاط: • تكون `override` مطلوبة عند استبدال دالة أو خاصية في الفئة الأساسية • يستدعي `super.method()` إصدار الفئة الأب • تمنع `final func/var` تجاوز العضو المحدد • تمنع `final class` إنشاء أي فئات فرعية • تتيح `final` الاستدعاء الثابت، وهو تحسين مجاني للأداء التالي: تحويل الأنواع باستخدام is وas? وas!
البدء مجانًا

تعلم Swift مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
122
الدروس
409

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

هل درس «‏override وfinal ومنع إنشاء الأصناف الفرعية» مجاني؟

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

ماذا ستتعلم في «‏override وfinal ومنع إنشاء الأصناف الفرعية»؟

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

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

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

كم من الوقت يستغرق درس «‏override وfinal ومنع إنشاء الأصناف الفرعية»؟

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

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

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

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

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