读书人

哪位高手帮做一道面试题呀

发布时间: 2011-12-31 23:50:30 作者: rapoo

谁帮做一道面试题呀,
8. 写出程序的输出结果:
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);
}
}

[解决办法]
太有难度了~
[解决办法]
2
5
1
6
[解决办法]
首先在a.Fun2(b)中a.Fun1(1)这里的a其实是B类型的,所以调用的是b.Fun1,也就是base.Fun1(1+1),输出2;然后调用a.Fun1(5)输出5。

b.Fun2(a)中,a.Fun1(1)调用的是A类型的fun1方法,输出1,然后的Fun1(5)调用的是b.Fun1(5)所以输出6
[解决办法]
override
[解决办法]
考你的面向对象基础知识...
[解决办法]
2
5
1
6

读书人网 >C#

热点推荐