类继承问题

booooo 2011-03-25 05:45:07
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部分,有谁可以详细讲解一下吗?????

...全文
66 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
hoken2020856 2011-03-25
  • 打赏
  • 举报
回复
public new void Fun() 


new的意思就是子类单独的方法,跟父类尽管重名,但是毫无关系

a终究是个A的实例
种草德鲁伊 2011-03-25
  • 打赏
  • 举报
回复
死记硬背呗,override 才会调用派生类的方法.

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧