谁帮做一道面试题呀,
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