ارث بری توابع هم شکل - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

ارث بری توابع هم شکل

0 امتیاز

با سلام.می خواستم بدونم اگر تابعی در کلاس پدر تعریف شود ،،،،،،،،،ایا باز هم باید با override  در کلاس فرزند تعریف شود و یا اصن نیازی به تعریف نیس؟؟؟؟؟؟؟بعد اگر اندکی تفاوت میان تابع موجود در والد و فرزند بود باید چی کار کنم؟؟؟؟

سوال شده خرداد 31, 1393  بوسیله ی Sher228 (امتیاز 167)   18 33 44
دوباره تگ گذاری شد تیر 16, 1393 بوسیله ی BlueBlade

2 پاسخ

+2 امتیاز

سلام دوست عزیز

وقتی override میکنیم که نیاز به تغییر دادن تابع داشته باشیم .

برای این مورد که حتما باید تابع رو در تغییر اندک بازنویسی کنیم یا نه سناریوی مختلفی وجود داره مثلا من میخوام تابع فرزند کار اضافه دیگری هم انجام بده در تابع فرزند تابع والد

را فراخوانی میکنم سپس امور اضافه رو انجام میدم

 

class child : parent
{
 public void foo()
{
 base.foo();
 // do some thing
}
}

 

پاسخ داده شده خرداد 31, 1393 بوسیله ی alixw24 (امتیاز 656)   2 5 13
+1 امتیاز

سلام 

نیازی به تعریف به صورت override در کلاس فرزند ندارید.

اما اکر نیاز به این دارید که تابع همنام رو در کلاس فرزند با تغییرات تعریف کنید override کنید بهتره، حتی شما میتونید override هم تعریف نکنید که کار جالبی نیست.

هنگامی که تفاوت بود به اینصورت عمل کنید:

    class Father
    {
        public virtual void print()
        {
            System.Console.WriteLine("Father");
        }
    }

    class Child : Father
    {
        public override void print()
        {
            System.Console.WriteLine("Child");
        }
    }

اما اگر override نکنید به این صورت:

    class Father
    {
        public  void print()
        {
            System.Console.WriteLine("Father");
        }
    }

    class Child : Father
    {
        public  void print()
        {
            System.Console.WriteLine("Child");
        }
    }

در مورد دوم کلاس Child تابع print کلاس Father رو مخفی می کنه و تابع print خودش رو  اجرا می کنه که بهش Member Hiding گفته میشه که اصلا کار جالبی نیست.

پاسخ داده شده تیر 24, 1393 بوسیله ی امیدوار (امتیاز 872)   21 63 76
ویرایش شده تیر 24, 1393 بوسیله ی امیدوار
...