MustInherit (Visual Basic)
يحدد أن فئة يمكن استخدامها فقط ك فئة أساسية و لا يمكنك انشاء كائن مباشرة منها.
ملاحظات
الغرض من الفئة الأساسية (يعرف أيضاً باسم فئة مجردة) هو تعريف الوظائف الشائعة لكل الفئات المشتقة منها. يوفر ذلك على الفئات المشتقة من امتلاك عناصر شائعة معاد تعريفها. في بعض الحالات، هذه الوظيفة الشائعة غير كاملة بما يكفي لعمل كائن, و كل فئة مشتقة تعرف الوظيفة المفقودة. في مثل هذه الحالة، تحتاج الى أن تجعل التعليمات البرمجية المستهلكة أن تنشئ الكائنات فقط من الفئات المشتقة. استخدم MustInherit على الفئة الأساسية لفرض هذا.
استخدام آخر لـ MustInherit الفئة هو تقييد متغير لمجموعة من الفئات ذات الصلة. يمكن تعريف فئة أساسية ويمكنك اشتقاق كل هذه الفئات ذات الصلة منه. الفئة الأساسية لا تحتاج إلى توفير أية وظائف شائعة لكافة الفئات المشتقة, لأنه يمكن أن يعمل كعامل تصفية لتعيين قيم للمتغيرات. إذا كانت التعليمات البرمجية تعرف متغير كفئة أساسية, يسمح Visual Basic لتعيين فقط كائن من أحد الفئات المشتقة لذلك المتغير.
.NET Framework يعرف عدةMustInherit الفئات بينها Array, Enum، و ValueType. ValueType مثال على فئة اساسية التي تقيد متغير. كل أنواع القيمة ينحدر من ValueType. إذا قمت بإعلان متغيّر كـ ValueType، يمكنك تعيين فقط أنواع القيم إلى ذلك المتغير.
القواعد
تعريف السياق. يمكنك استخدام MustInherit فقط في Class الكشف.
معدلات مجتمعة. لايمكنك تعيين MustInherit معاً مع NotInheritable في نفس التعريف.
مثال
يوضح المثال التالي كلا التوريث المفروض و التجاوز المفروض. الفئة الأساسية shape تعرف متغير acrossLine. الـفئات circle و square المشتقة من shape. ترث تعريف acrossLine، ولكن يجب أن تعرّف دالة area نظراً لأن الحساب مختلف لكل نوع من الأشكال.
Public MustInherit Class shape
Public acrossLine As Double
Public MustOverride Function area() As Double
End Class
Public Class circle : Inherits shape
Public Overrides Function area() As Double
Return Math.PI * acrossLine
End Function
End Class
Public Class square : Inherits shape
Public Overrides Function area() As Double
Return acrossLine * acrossLine
End Function
End Class
Public Class consumeShapes
Public Sub makeShapes()
Dim shape1, shape2 As shape
shape1 = New circle
shape2 = New square
End Sub
End Class
قم بتعريف shape1 و shape2 لتكون من نوع shape. ومع ذلك، لا يمكنك إنشاء كائن من shape بسبب أنه يفتقر لوظيفة الدالة area و معلم كـ MustInherit.
لأنه تم تعريفهم كـ shape، المتغيرات shape1 و shape2 يتم تقييدها لكائنات من الفئات المشتقة circle و square. لا يسمح Visual Basic تعيين أي كائن أخر لهذه المتغيرات, التي تمنحك مستوى عالياً من أمان النوع.
الاستخدام
معدّل MustInherit يمكن استخدامه في هذا السياق:
راجع أيضًا:
المرجع
NotInheritable في (Visual Basic)