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()
a指向B的对象B已经重写了A中的Fun(),为什么a.Fun()结果是A.Fun(),是不是指向的是B中的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()
a指向B的对象B已经重写了A中的Fun(),为什么a.Fun()结果是A.Fun(),是不是指向的是B中的A部分,有谁可以详细讲解一下吗?????
new的意思就是子类单独的方法,跟父类尽管重名,但是毫无关系a终究是个A的实例