【新手问题】A是B的父类,A a=new B()
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()
如果把class B中的Fun()的new改成override,执行结果如下:
A
B
B.Fun()
问题①:A a=new B()和B a=new B()具体有什么区别?
问题②:我知道如果是B a=new B()的话,那无论class B中Fun()是new还是override,最后输出的都会是B.Fun(),为什么换成A a=new B()就不同了?(问题还是在于A a=new B())