PDA

View Full Version : یک سوال از چند ریختگی



daniyal mirzai
یک شنبه 06 شهریور 1390, 14:45 عصر
سلام دوستان برنامه نویس من می خوام بدونم بر چه اساس ومنطقی خروجی زیر حاصل می شود ، مفاهیم ابتدایی چند ریختگی رو می دونم اما چرا وچه طوری چنین خروجی از کد زیر به وجود می یاد.


using System.Text;
namespace Inheritance
{
class Program
{
static void Main(string[] args)
{
A ab = new B(); ab.WhoAreYou();
A ac = new C(); ac.WhoAreYou();
A ad = new D(); ad.WhoAreYou();
A ae = new E(); ae.WhoAreYou();
A af = new F(); af.WhoAreYou();
B bc = new C(); bc.WhoAreYou();
B bd = new D(); bd.WhoAreYou();
B be = new E(); be.WhoAreYou();
B bf = new F(); bf.WhoAreYou();
C cd = new D(); cd.WhoAreYou();
C ce = new E(); ce.WhoAreYou();
C cf = new F(); cf.WhoAreYou();
D de = new E(); de.WhoAreYou();
D df = new F(); df.WhoAreYou();
E ef = new F(); ef.WhoAreYou();
}
}
class A
{
public virtual void WhoAreYou()
{ Console.WriteLine("I Am An A"); }
}
class B:A
{
public override void WhoAreYou()
{ Console.WriteLine("I Am A B"); }
}
class C:B
{
public new virtual void WhoAreYou()
{ Console.WriteLine("I Am A C"); }
}
class D:C
{
public override void WhoAreYou()
{ Console.WriteLine("I Am A D"); }
}
class E:D
{
public override void WhoAreYou()
{ Console.WriteLine("I Am An E"); }
}
class F:E
{
public new virtual void WhoAreYou()
{ Console.WriteLine("I Am A F"); }
}

}



خروجی:




I Am A B
I Am A B
I Am A B
I Am A B
I Am A B
I Am A B
I Am A B
I Am A B
I Am A B
I Am A D
I Am An E
I Am An E
I Am An E
I Am An E
I Am An E
Press any key to continue . . .