日期:2014-05-18  浏览次数:21054 次

求c#中new关键字对继承的影响的一道题目?
public abstract class A
{
public A()
{
Console.WriteLine('A');
}
public virtual void Fun()
{
Console.WriteLine("A.Fun()");
}
}

public class B : A
{
public B()
{
Console.WriteLine('B');
}

public new void Fun()
{
Console.WriteLine("B.Fun()");
}

public static void Main()
{
A a = new B();
a.Fun();
}
}
为什么输出
A
B
A.Fun()而不是
A
B
B.Fun()
new关键字是隐藏继承的成员,这里是什么原因呢
我把new改成override就输出B.Fun()
到底是什么原因,请给我详细分析

------解决方案--------------------
new关键字是隐藏继承的成员,这里是什么原因呢 
==
这有什么好说,人家就是这样规定的

我把new改成override就输出B.Fun() 
==
这个实现了多态,所以当父类的引用指向子类的成员时会调用子类重写的方法
------解决方案--------------------
学习了.:)