请高手帮忙解释一下以下的代码是怎么执行的,那个先那个后..这东西总觉得很难明白~~using System;
public class A
{
public virtual void Fun1(int i)
{
Console.Write(i);
}
public void Fun2(A a)
{
a.Fun1(1);
Fun1(5);
}
} public class B:A
{
public override void Fun1(int i)
{
base.Fun1(i+1);
}
public static void Main()
{
B b = new B();
A a = new A();
a.Fun2(b);
b.Fun2(a);
}
}
public class A
{
public virtual void Fun1(int i)
{
Console.Write(i);
}
public void Fun2(A a)
{
a.Fun1(1);
Fun1(5);
}
} public class B:A
{
public override void Fun1(int i)
{
base.Fun1(i+1);
}
public static void Main()
{
B b = new B();
A a = new A();
a.Fun2(b);
b.Fun2(a);
}
}
此处还调用了父类的Fun1实现
b.Fun2(a)->a.Fun1(1)->b.Fun1(5)
此处调用父类的Fun1实现
public class A
{
public virtual void Fun1(int i)
{
Console.WriteLine(i);//4-(输出2) //9-输出5
}
public void Fun2(A a)
{
a.Fun1(1);//2-调用B类Fun1 //7-调用A类Fun1(输出1)
Fun1(5);//5-调用A类Fun1(输出5) //8-调用B类Fun1 ***(重点在这儿B类)
}
}public class B : A
{
public override void Fun1(int i)
{
base.Fun1(i + 1);//3-调用A类Fun1
}
public static void Main()
{
B b = new B();
A a = new A();
a.Fun2(b);//1-调用A类Fun2
b.Fun2(a);//6-调用A类Fun2
}
}