استفاده نکردن از کلمه virtual و override

محمد فرخیان

عضویت : 1396/10/25 پرسش ها : 39 پاسخ ها : 36

استفاده نکردن از کلمه virtual و override

ارسال شده در : ‫۱۱ ماه قبل، سه شنبه ۳ اردیبهشت ۱۳۹۸، ساعت ۱۶:۵۰

سلام

من توی قطعه کد زیر از کلمه virtual و override استفاده نکردم و نتیجه با زمانی که استفاده میکنم یکیه.

الان باید متد کلاس A اجرا بشه (چون هنوز از کلمه virtual و override استفاده نکردم) ولی برای کلاس B اجرا میشه

class Program
    {
        static void Main(string[] args)
        {
            //ClassA a = new ClassA();
            //a.SayHello("Mohammad", "Farokhian");

            ClassB b = new ClassB();
            b.SayHello("Mohammad","Farokhian");
        }
    }

    class ClassA
    {
        public string Name { get; set; }
        public string Family { get; set; }

        public void SayHello(string name,string family)
        {
            Name = name;
            Family = family;
            Console.WriteLine($"Hello {Name} {Family}");
        }
    }

    class ClassB:ClassA
    {
        public string Name { get; set; }
        public string Family { get; set; }

        public void SayHello(string name, string family)
        {
            //base.SayHello(name, family);
            //Name = name;
            //Family = family;
            //Console.WriteLine($"Salam {Name} {Family}");
        }
    }

ایمان مدائنی

عضویت : 1396/09/10 پرسش ها : 5 پاسخ ها : 10873
ارسال شده در :‫۱۱ ماه قبل، سه شنبه ۳ اردیبهشت ۱۳۹۸، ساعت ۱۷:۱۲

سلام 

بله در اینصورت فقط متد کلاسی که صدا زدید اجرا میشه 

0 تشکر

محمد فرخیان

عضویت : 1396/10/25 پرسش ها : 39 پاسخ ها : 36
ارسال شده در :‫۱۱ ماه قبل، سه شنبه ۳ اردیبهشت ۱۳۹۸، ساعت ۱۷:۱۷

بله این رو متوجه هستم

علتش رو میخوام بدونم.من که هنوز نگفتم متد کلاس اصلی، در کلاس مشتق شده قابل تغییره (با استفاده از virtual)، چطور تغییرش دادم و همون هم اجرا شد؟

چه فرقی هست بین مثالی که در بالا هست و دقیقا همون مثال با virtual و override ؟

خروجیها که یکیه

0 تشکر

ایمان مدائنی

عضویت : 1396/09/10 پرسش ها : 5 پاسخ ها : 10873
ارسال شده در :‫۱۱ ماه قبل، سه شنبه ۳ اردیبهشت ۱۳۹۸، ساعت ۱۷:۲۰

خیر تغییر ندادید در کلاس مشتق به متد به اون نام ساختید پس متد پدر یا base دیگه استفاده نمیشه 

ولی وقتی virtual کنید میتونید هر دو را صدا بزنید و عملیات هردو را فراخوانی کنید با کلمه base

0 تشکر

برای ارسال پاسخ باید وارد شوید و یا در سایت عضو شوید