تقييم الموضوع :
  • 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
}}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [سلسلة التعامل مع الويب] تحليل الصفحات باستخدام HtmlAgilityPack الشاكي لله 9 1,651 25-09-16, 12:19 PM
آخر رد: ابراهيم كركوكي
  [نقاش] الفرق بين الـ Interface , Abstract Class , Base Class , Sealed Class الشاكي لله 18 1,474 03-07-16, 06:52 AM
آخر رد: الشاكي لله
  انشاء ملف dll باستخدام لغة #c Sajad 3 1,932 02-06-16, 11:30 AM
آخر رد: CLARO
  [C#.NET] الفرق بين #String And String Builder c Devahmedsalim 3 1,773 15-09-13, 05:50 PM
آخر رد: sooriaty03
  Tips and Tricks : الفرق بين const و static readonly RaggiTech 0 693 14-10-12, 03:05 PM
آخر رد: RaggiTech
  [حصرياً] برمجة لعبة x-o باستخدام c#.net Blue Sky 0 2,043 01-10-12, 07:43 PM
آخر رد: Blue Sky

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


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