سلام استاد
شما در جلسه 23 چنین چیزی رو مطرح کردید
class Person
{
public string name;
public void SayHello()
{
Console.WriteLine("Hello " + name);
}
}
class Student : Person
{
public new void SayHello()
{
Console.WriteLine(name + " Chetory?");
}
}
خب اولا که ما اگر new رو هم نذاریم کد درست کار میکنه و SayHello() کلاس Student توی اولیت قرار میگیره . پس چرا new رو گذاشتید ؟
و سوال دوم اینکه درست در جلسه بعدی فرمودید که باید در کلاس پدر متد SayHello رو virtual کنیم تا بتونیم در کلاس فرزند override اش کنیم.
این که بدون اینها هم کار میکنه ؟
پس دلیلش چیه که همچنین چیزی گفتید ؟
من یکمی گیج شدم
سلام
سوالت اشتباهه"این که بدون اینها هم کار میکنه ؟"
کار نمیکنه!!
وقتی یه متد تو کلاس پدر داری و یه متد دیگه تو کلاس فرزند به همون نام ایجاد میکنی وقتی متد کلاس فرزند رو فراخوانی کنی دستوراتی که درون متد کلاس پدر هست اجرا میشه. مگر اینکه virtual رو به متد کلاس پدر و override رو به متد کلاس فرزند اضافه کنی اینجوری وقتی که متد کلاس فرزند رو فرخوانی میکنی دستوراتِ خود متد کلاس فرزند اجرا میشن نه دستوراتی که تو کلاس پدره
ببخشید من جواب دادم