求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()
==
这个实现了多态,所以当父类的引用指向子类的成员时会调用子类重写的方法
------解决方案--------------------学习了.:)