什么是类的多态性  ,应该怎么去理解类的多态性呀

解决方案 »

  1.   

    多态性,简单的说就是“一个接口,多个方法”,具体表现为相同的方法签名代表不同的方法实现,同
    一操作作用于不同的对象,产生不同的执行结果。在.NET 中,覆写实现了运行时的多态性,而重载
    实现了编译时的多态性。
    运行时的多态性,又称为动态联编,通过虚方法的动态调度,在运行时根据实际的调用实例类型决定
    调用的方法实现,从而产生不同的执行结果。class Base
    {
      public virtual void MyFunc(string str)
      {
        Console.WriteLine("{0} in Base", str);
      }
    }
    class Derived: Base
    {
    //覆写基类成员
      public override void MyFunc(string str)
      {
       Console.WriteLine("{0} in Derived", str);
      }
      public static void Main()
      {
       Base B = new Base();
       B.MyFunc("Hello");
       Derived A = new Derived();
       B = A;
       B.MyFunc("Morning");
      }
    }
    从结果中可知,对象B 两次执行B.MyFunc 调用了不同的方法,第一次调用基类方法MyFunc,而
    第二次调用了派生类方法MyFunc。在执行过程中,对象B 先后指向了不同的类的实例,从而动态调
    用了不同的实例方法,显然这一执行操作并非确定于编译时,而是在运行时根据对象B 执行的不同类
    型来确定的。我们在此不分析虚拟方法的动态调度机制,而只关注通过虚方法覆写而实现的多态特性,
      

  2.   

    有没有办法把处于TreeView同一Level的项目数量统计出来? 
    例如: 
    1-11-111 
         112 
         113 
    2-11-111 
         112 
    我想把处于第三层的项目数量统计出来,怎么实现? 上例中应该是5
      

  3.   

    通过父类的引用,运行时调用不同子类方法理解多态的关键是内存布局,方法表可以参加那我的BLOG文章
      

  4.   

    http://blog.csdn.net/dodream/archive/2009/09/24/4589573.aspx