sealed (مرجع #C)

عند تطبيقها على فئة، يمنع المعدل sealed الفئات الأخرى من الوراثة من هذه الفئة. في المثال التالي، الفئة B ترث من الفئة A، ولكن لا يمكن أن ترث أية فئة من فئة B.

    class A {}    
    sealed class B : A {}

يمكنك أيضاً استخدام المعدل sealed على الأسلوب أو الخاصية التي تتجاوز أسلوب ظاهري أو خاصية ظاهرية في فئة أساسية. هذا يمكّنك من السماح للفئات من الانحدار من فئتك ومنعهم من تجاوز خصائص أو أساليب ظاهرية معينة.

مثال

في المثال التالي Z يرث من Y لكن لا يمكن لـ Z أن تتجاوز الدالة الظاهرية F التي تم تعريفها في X وتم ختمها في Y.

    class X
    {
        protected virtual void F() { Console.WriteLine("X.F"); }
        protected virtual void F2() { Console.WriteLine("X.F2"); }
    }
    class Y : X
    {
        sealed protected override void F() { Console.WriteLine("Y.F"); }
        protected override void F2() { Console.WriteLine("X.F3"); }
    }
    class Z : Y
    {
        // Attempting to override F causes compiler error CS0239.
        // protected override void F() { Console.WriteLine("C.F"); }

        // Overriding F2 is allowed.
        protected override void F2() { Console.WriteLine("Z.F2"); }
    }

عند تعريف خصائص أو أساليب جديدة في فئة يمكنك منع الفئات المشتقة من تجاوزها عن طريق عدم تصريحها كـ virtual.

من الخطأ استخدام المعدل abstract لفئة مختومة لأنه يجب أن ترث فئة معينه الفئة المجردة وتوفر تطبيق للخصائص أو الأساليب المجردة.

عند التطبيق على أسلوب أو خاصية، يجب استخدام override مع المعدل sealed .

لا يمكن وراثة البنيات لأنها مختومة ضمنياً.

لمزيد من المعلومات، راجع الوراثة (دليل البرمجة لـ #C).

    sealed class SealedClass
    {
        public int x;
        public int y;
    }

    class SealedTest2
    {
        static void Main()
        {
            SealedClass sc = new SealedClass();
            sc.x = 110;
            sc.y = 150;
            Console.WriteLine("x = {0}, y = {1}", sc.x, sc.y);
        }
    }
    // Output: x = 110, y = 150

في المثال السابق، يمكنك محاولة الوراثة من الفئة المختومة باستخدام العبارة التالية:

class MyDerivedC: SealedClass {} // Error

والنتيجة رسالة خطأ:

'MyDerivedC' cannot inherit from sealed class 'SealedClass'.

مواصفات لغة #C

لمزيد من المعلومات، راجع مواصفات لغة #C. مواصفات اللغة هي المصدر النهائي لبناء جملة C# واستخدامها.

ملاحظات

لتحديد ما إذا كان يجب ختم الفئة أو الأسلوب أو الخاصية, يجب بشكل عام مراعاة النقطتين التاليتين:

  • الاستفادة المحتملة التي تستفيد منها الفئات المشتقة هي من خلال إمكانية تخصيص الفئات.

  • احتمال أن الفئات المشتقة تقوم بتعديل الفئات بطريقة ما بحيث لا تقوم الفئات على العمل بشكل صحيح أو كما هو متوقع.

راجع أيضًا:

المرجع

الكلمات الأساسية لـ #C

فئة عم ثابتة والثابتة فئة الأعضاء (C# البرمجة الدليل)

الفئات المجردة والفئات المغلقة وأعضاء الفئات (دليل البرمجة لـ #C)

معدلات الاتصال ( ارشادات البرمجة C# )

المعدّلات (مرجع #C)

override (مرجع #C)

الظاهري ( مرجع C# )

المبادئ

دليل البرمجة لـ #C

موارد أخرى

مرجع C#‎