请教一个关于继承的问题

spring1_ 2009-03-09 03:40:02
帮忙写出程序的输出结果:(为什么?)谢啦!

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);
}
}
...全文
145 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
shangwei97 2009-03-09
  • 打赏
  • 举报
回复
不错,知道了,
b.Fun2(a);
执行A类中的Fun2
a.Fun1;
然后,执行B类中的 Fun1
base.Fun1(i+1)
shangwei97 2009-03-09
  • 打赏
  • 举报
回复
不错,知道了,
b.Fun2(a);
执行A类中的Fun2
a.Fun1;
然后,执行B类中的 Fun1
base.Fun1(i+1)
ztenv 2009-03-09
  • 打赏
  • 举报
回复
对不起,一时大意搞错了,希望不要误导......
spring1_ 2009-03-09
  • 打赏
  • 举报
回复
貌似懂了,谢谢各位!
zjq0034 2009-03-09
  • 打赏
  • 举报
回复
看样子应该是
2
5
1
6
萤火架构 2009-03-09
  • 打赏
  • 举报
回复
2 a.Fun2(b)--B.Fun1
5 a.Fun2(b)--A.Fun1
1 b.Fun2(a)--A.Fun1
6 b.Fun2(a)--B.Fun1
hxxxs 2009-03-09
  • 打赏
  • 举报
回复
最后一个b.Fun1(5);
ztenv 2009-03-09
  • 打赏
  • 举报
回复
我错了吗?请指教..汗.....
SlaughtChen 2009-03-09
  • 打赏
  • 举报
回复
关注一下
ztenv 2009-03-09
  • 打赏
  • 举报
回复
a.Fun2(b);
//调用b.fun1(1);//这里是多态的调用
再调用a.fun1(5);
所以输出:
2
5

b.Fun2(a);
//调用a.Fun1(1);
再调用a.Fun1(5);
所以输出:
1
5
zfh198601 2009-03-09
  • 打赏
  • 举报
回复
2
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
还有其它就自已去单步看下就明白了。。。
人工智能算法 2009-03-09
  • 打赏
  • 举报
回复
2
5
1
6
zfh198601 2009-03-09
  • 打赏
  • 举报
回复
2
5
1

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧