请帮忙解释一下以下的一段简单代码
请问一下 
 以下的结果是A,为什么不是B呢,我都new了print阿 
 using   System;   
 namespace   aa 
 { 
             public   class   Test 
             { 
                         public   class   A 
                         { 
                                     public   virtual   void   print() 
                                     { 
                                                 Console.Out.WriteLine( "A "); 
                                     } 
                         }   
                         public   class   B:A 
                         { 
                                     public   new   void   print() 
                                     { 
                                                 Console.Out.WriteLine( "B "); 
                                     } 
                         }   
                         static   void   Main(string[]   argv) 
                         {   
                                     A   b   =   new   B(); 
                                     b.print(); 
                                     Console.ReadLine(); 
                         } 
             } 
 } 
 以下的结果是B,为啥不是A呢难道override把A类都覆盖了?即使实例化的是B? 
 using   System;   
 namespace   aa 
 { 
             public   class   Test 
             { 
                         public   class   A 
                         { 
                                     public   virtual   void   print() 
                                     { 
                                                 Console.Out.WriteLine( "A "); 
                                     } 
                         }   
                         public   class   B:A 
                         { 
                                     public   override   void   print() 
                                     {