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

الكلمة الأساسية abstract تمكنك من إنشاء فئات وأعضاء فئات غير كاملة يجب أن يتم تطبيقها في فئات مشتقة.

الكلمة الأساسية sealed تمكنك من منع الوراثة من الفئة الخاصة بك أو منع الوراثة لأعضاء معينة بالفئة تم تمييزها مسبقاً بـ virtual.

الفئات المجردة وأعضاء الفئات

يمكن تعريف الفئات كفئات مجردة عن طريق وضع الكلمة الأساسية abstract قبل تعريف الفئة. فعلى سبيل المثال:

public abstract class A
{
    // Class members here.
}

لا يمكن إنشاء مثيل للفئة المجردة. الغرض من الفئة المجردة هو توفير تعريف شائع لفئة أساسية يمكن أن يتشاركون فيها الفئات المشتقة. على سبيل المثال، يمكن لمكتبة الفئات تعريف فئة مجردة تُستخدم كمعلمة للعديد من دالاتها ثم تتطلب المبرمجين باستخدام تلك المكتبة لتوفير التنفيذ الخاص بهم للفئة عن طريق إنشاء فئة مشتقة.

يمكن للفئات المجردة أيضاً تعريف الأساليب المجردة. ويتم تحقيق ذلك بواسطة إضافة الكلمة الأساسية abstract قبل نوع الإرجاع للأسلوب. فعلى سبيل المثال:

public abstract class A
{
    public abstract void DoWork(int i);
}

لا تحتوي الأساليب المجردة على تطبيق لذلك يكون تعريف الأسلوب متبوعاً بفاصلة منقوطة بدلاً من كتلة أسلوب عادية. يجب تطبيق جميع الأساليب المجردة في الفئات المشتقة من الفئات المجردة. عندما ترث فئة مجردة أسلوب ظاهري من فئة أساسية، يمكن للفئة المجردة أن تقوم بتجاوز الأسلوب الظاهري بأسلوب مجرد. فعلى سبيل المثال:

// compile with: /target:library
public class D
{
    public virtual void DoWork(int i)
    {
        // Original implementation.
    }
}

public abstract class E : D
{
    public abstract override void DoWork(int i);
}

public class F : E
{
    public override void DoWork(int i)
    {
        // New implementation.
    }
}

إذا تم تعريف أسلوب من نوع virtual بأن يكون abstract يظل الأسلوب ظاهرياً لأي فئة ترث من الفئة المجردة. لا يمكن للفئة التي ترث أسلوب مجرد من الوصول إلى التطبيق الأصلي للأسلوب — في المثال السابق، لا يمكن للـ DoWork في الفئة F من الاتصال بالـ DoWork التي في الفئة D. وبهذه الطريقة، يمكن للفئة المجردة فرض الفئات المشتقة من توفير تطبيقات جديدة للأساليب الظاهرية.

الفئات المغلقة وأعضاء الفئات

يمكن تعريف الفئات كفئات مغلقة عن طريق وضع الكلمة الأساسية sealed قبل تعريف الفئة. فعلى سبيل المثال:

public sealed class D
{
    // Class members here.
}

لا يمكن استخدام الفئات المغلقة كفئات أساسية. ولهذا السبب، فإنها لا يمكن أن تكون فئات مجردة. تمنع الفئات المغلقة الاشتقاق. وبسبب عدم استخدامها كفئة أساسية, يمكن تطبيق بعض تحسينات وقت التشغيل لجعل استدعاء الفئات المغلقة أسرع بقليل.

يمكن لأي عضو فئة أو أسلوب أو حقل أو خاصية أو حدث في فئة مشتقة قام بتجاوز عضو ظاهري في الفئة الأساسية أن يقوم بتعريف ذلك العضو كعضو مغلق. هذا يناقض الوجه الظاهري للعضو لأي فئة مشتقة. ويتم تحقيق ذلك عن طريق وضع الكلمة الأساسية sealed قبل الكلمة الأساسية override في تعريف عضو الفئة. فعلى سبيل المثال:

public class D : C
{
    public sealed override void DoWork() { }
}

راجع أيضًا:

المهام

كيفية القيام بما يلي: قم بتعريف خصائص الخلاصة (البرمجة C# إرشادات)

المرجع

الفئات والبنيات (دليل البرمجة لـ #C)

الوراثة (دليل البرمجة لـ #C)

الأساليب (دليل البرمجة لـ #C)

الحقول ( ارشادات البرمجة C# )

المبادئ

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