帮忙写出程序的输出结果:(为什么?)谢啦!public class A
{
public virtual void Fun1(int i)
{
Console.WriteLine(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 virtual void Fun1(int i)
{
Console.WriteLine(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);
}
}
解决方案 »
- C# 怎么包含外部文件?
- 简单提问=直接送分
- 如何获取一个目录下包含子目录内的所有文件名,并保存在一个数组中
- 在C#中怎么终止一个进程。
- 用jmail发送邮件时,当执行到send语句时就死等
- 如何获取DataGridView的列的宽度~~~~~~~~~~~~~~~~~~~~
- 在datagrid中如何选择自己想要显示的数据行,并使datagrid把此行数据显示出来
- 怎么才能获得远程计算机所开的所有端口号?用哪个类?
- <td>d2014122100001123</td> 剔除 <td> </td> 的正则怎么写?
- 大家来看看,这是用c#的什么控件或第三方开发的?
- 本地读取问题,急,请大家帮忙!
- InstallShield 2009 for Visual Studio 2008共有13个选择项,C#程序用它打包选择哪一项使打包更容易更完整,不需要编程人员去关心和深找那些需要的但并不熟悉的dll
5
1
6
单步调试,看运行步骤:
1、public static void Main()
2、a.Fun2(b);
3、public override void Fun1(int i){}
4、public virtual void Fun1(int i) 输出 2
还有其它就自已去单步看下就明白了
//调用b.fun1(1);//这里是多态的调用
再调用a.fun1(5);
所以输出:
2
5b.Fun2(a);
//调用a.Fun1(1);
再调用a.Fun1(5);
所以输出:
1
5
5 a.Fun2(b)--A.Fun1
1 b.Fun2(a)--A.Fun1
6 b.Fun2(a)--B.Fun1
b.Fun2(a);
执行A类中的Fun2
a.Fun1;
然后,执行B类中的 Fun1
base.Fun1(i+1)
b.Fun2(a);
执行A类中的Fun2
a.Fun1;
然后,执行B类中的 Fun1
base.Fun1(i+1)