wIthwInd

-随风而行

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
且看下面的代码:
using System;

public class A
{
    
public virtual void F()
    
{
        Console.WriteLine(
"A");
    }

}


public class B:A
{
    
public override void F()
    
{
        Console.WriteLine(
"B");
    }

}


public class C:B
{
    
public new virtual void F()
    
{
        Console.WriteLine(
"C");
    }

}


public class D:C
{
    
public override void F()
    
{
        Console.WriteLine(
"D");
    }

}


public class MyMainClass
{
    
public static void Main()
    
{
        D d 
= new D();
        
        A a 
= d;
        a.F();
        
        B b 
= d;
        b.F();
        
        C c 
= d;
        c.F();
        
        d.F();
    }

}

程序运行的结果是:
B
B
D
D
请问a.F();为什么调用的是B的方法,而不是D的?
posted on 2004-10-07 21:48  随风  阅读(662)  评论(5编辑  收藏  举报