من المبادئ العامة في ال OOP استخدام مفهوم ال override ، في برامجك من خلال .net يمكنك تحديد الدالة لتكون قابلة لعمل override لها لاحقاً بالشكل التالي : C#: public class Base { public virtual void SomeMethod() { } } | vb.net: Public Class Base Public Overridable Sub SomeMethod() End Sub End Class | ومن ثم لعمل override لهذه الدالة في فئة Class آخر نقوم بكتابة الكود التالي : C#: public class Derived : Base { public override void SomeMethod() { } } | vb.net: Public Class Derived Inherits Base Public Overloads Overrides Sub SomeMethod() End Sub End Class | في هذه الحالة لو قمنا بتعريف نسخة من الفئة الأولى Base وقمنا بعملها من النوع Derived فسيتم تنفيذ الدالة الموجودة في Derived مباشرة : C#: Base b = new Derived(); b.SomeMethod(); | vb.net: Dim b As Base = New Derived() b.SomeMethod() | التعريف باستخدام new أو Shadows : اما لو قمنا بتعريف ال override باستخدام new أو Shadows في vb.net فكل ما سيحدث هو عملية اخفاء مؤقت hide ، لذا فإن الأمر التالي مثلاً : C#: public class Base { public virtual void SomeOtherMethod() { } } public class Derived : Base { public new void SomeOtherMethod() { } } Base b = new Derived(); Derived d = new Derived(); b.SomeOtherMethod(); d.SomeOtherMethod(); | vb.net: Public Class Base Public Overridable Sub SomeOtherMethod() End Sub End Class Public Class Derived Inherits Base Public Shadows Sub SomeOtherMethod() End Sub End Class Dim b As Base = New Derived() Dim d As New Derived() b.SomeOtherMethod() d.SomeOtherMethod() | سوف يقوم باستدعاء الدالة الأولى في السطر الثالث ، فيما يقوم باستدعاء الدالة الثانية فقط في السطر الرابع . المصدر : http://blogs.msdn.com/csharpfaq/archive/2004/03/12/88453.aspx |