A a = new B(); 理解意义。
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   a   =   new   B();      怎么理解呢? 
 执行顺序是: 
 先执行基类a的构造涵数,在来执行子类的构造涵数
------解决方案--------------------A a = new B();     
 先实例化一个类B的对象,然后隐式类型转换为类A的对象,相当于 
 B b=new B(); 
 A a=b;
------解决方案--------------------执行结果如下: 
 A 
 B 
 A.Fun()   
 先A后B,即先父后子。
------解决方案--------------------多态性.  就好比所有的类派生与object   
------解决方案--------------------凡是基类可以出现的地方,子类必然可以代替基类出现. 
 针对抽象编程.....   
 楼主找本设计模式书看看,就明白为什么有这样的表达了.
------解决方案--------------------应该是这句执行吧 
 Console.WriteLine( "B.Fun() ");
------解决方案--------------------这是纯玩概念了.   
 这段程序A a = new B();  怎么理解呢? 
 --------------- 
 是把B当成A来使用了.这样可能会丢失了B的特有的性质,比如用New声明的成员将不起作用!