涅槃2012 发表于 2012-10-25 23:59:49

C# 方法 虚方法的调用浅谈

我们在面试中经常碰到有关多态的问题,之前我也一直被此类问题所困扰,闹不清到底执行哪个方法。
先给出一道简单的面试题,大家猜猜看,输出是?
http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gifhttp://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gifView Code <div id="cnblogs_code_open_6699cd4f-52e5-4b65-a71f-5c8d10262a83" class="cnblogs_code_hide">    public class A
    {
      public void MethodF()
      {
            Console.WriteLine("A.F");
      }
      public virtual void MethodG()
      {
            Console.WriteLine("A.G");
      }
    }
    public class B : A
    {
      new public void MethodF()
      {
            Console.WriteLine("B.F");
      }
      public override void MethodG()
      {
            Console.WriteLine("B.G");
      }
    }
    class Test
    {
      static void Main()
      {
            B b;
            b = new B();
            A a = b;
            a.MethodF();
            b.MethodF();
            a.MethodG();
            b.MethodG();
      }
页: [1]
查看完整版本: C# 方法 虚方法的调用浅谈