سلام به همه دوستان
یک سوال از خدمتون داشتم آیا میشه یک متد Override شده رو Overload کرد ؟ چرا ؟
ممنون از کمکتون
Printable View
سلام به همه دوستان
یک سوال از خدمتون داشتم آیا میشه یک متد Override شده رو Overload کرد ؟ چرا ؟
ممنون از کمکتون
سلام
بله!
معمولاً خیلی از توابع موجود Overload هایی هم دارند که از تابع اصلی پارامتر کمتر با بیشتری میگیرد.
مثلاً تابعی برای رسم تصویر میتوانید چهار عدد برای مختصات مربع مقصد ترسیم را بگیرید.
یک Overload مناسب و منطقی برای این تابع میتواند فقط دو عدد برای مختصات نقطه ترسیم عکس رابگیرد.
(در واقع این Overload میتواند تابع اصلی اولیه را فراخوانی کند و دو عدد مختصات را که گرفته دو عدد ابعاد را هم با ابعاد تصویر اصلی پر کند.
البته نوع خاصی از Overload هم است که یکم تشریح بیشتری دارد و به نام Shadowing یا Shadows شناخته میشود.کد:'VB.Net
Public Class Class2
Inherits Class1
Public Overrides Sub Draw(ByVal image As System.Drawing.Image, ByVal x As Integer, ByVal y As Integer, ByVal width As Integer, ByVal height As Integer)
'...
End Sub
Public Overloads Sub Draw(ByVal image As System.Drawing.Image, ByVal x As Integer, ByVal y As Integer)
Me.Draw(image, x, y, image.Width, image.Height)
End Sub
//C#.Net
public class Class2
:Class1
{
public override void Draw(System.Drawing.Image image, int x, int y, int width, int height)
{
//...
}
public void Draw(System.Drawing.Image image, int x, int y)
{
this.Draw(image, x, y, image.Width, image.Height);
}
Shadows یک Overload است که هم نام و هم نوع و هم پارامتر (هم امضاء) یک یک متد موجود (قابل/غیر قابل Override) است که بجز موارد خیلی خاص پیشنهاد نمیشود و بهتر است انجام نشود. (ولی باز هم قابل انجام است)
موفق باشید.