تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
الفرق بين التعريف باستخدام overridde و new
#1
كاتب الموضوع : أحمد جمال

بسم الله الرحمن الرحيم .
السلام عليكم ورحمة الله وبركاته .


من المبادئ العامة في ال 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#:

كود :
[FONT=Tahoma]public class Base
{
public virtual void SomeOtherMethod()
{
}
}[/FONT]
[FONT=Tahoma]public class Derived : Base
{
public new void SomeOtherMethod()
{
}
}[/FONT]

[FONT=Tahoma]Base b = new Derived();
Derived d = new Derived();
b.SomeOtherMethod();
d.SomeOtherMethod();[/FONT]


vb.net:

كود :
[FONT=Tahoma]Public Class Base
Public Overridable Sub SomeOtherMethod()
End Sub
End Class [/FONT]
[FONT=Tahoma]Public Class Derived
Inherits Base
Public Shadows Sub SomeOtherMethod()
End Sub
End Class [/FONT]
[FONT=Tahoma]Dim b As Base = New Derived()
Dim d As New Derived()
b.SomeOtherMethod()
d.SomeOtherMethod() [/FONT]


سوف يقوم باستدعاء الدالة الأولى في السطر الثالث ، فيما يقوم باستدعاء الدالة الثانية فقط في السطر الرابع .

المصدر :
http://blogs.msdn.com/csharpfaq/archive/2004/03/12/88453.aspx
}}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  البحث عن كلمة داخل ملف نصي باستخدام تقنية Linq Sajad 5 1,348 أمس, 09:05 AM
آخر رد: اجيسك
  [سلسلة التعامل مع الويب] تحليل الصفحات باستخدام HtmlAgilityPack الشاكي لله 9 1,266 25-09-16, 12:19 PM
آخر رد: ابراهيم كركوكي
  [نقاش] الفرق بين الـ Interface , Abstract Class , Base Class , Sealed Class الشاكي لله 18 699 03-07-16, 06:52 AM
آخر رد: الشاكي لله
  انشاء ملف dll باستخدام لغة #c Sajad 3 1,522 02-06-16, 11:30 AM
آخر رد: CLARO
  [C#.NET] الفرق بين #String And String Builder c Devahmedsalim 3 1,595 15-09-13, 05:50 PM
آخر رد: sooriaty03
  Tips and Tricks : الفرق بين const و static readonly RaggiTech 0 536 14-10-12, 03:05 PM
آخر رد: RaggiTech
  [حصرياً] برمجة لعبة x-o باستخدام c#.net Blue Sky 0 1,561 01-10-12, 07:43 PM
آخر رد: Blue Sky
  إنشاء مشروع باستخدام sql server و linq وتقارير crystal report 0 203 منذ اقل من1 دقيقه مضت
آخر رد:

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم