C#中Virtual与override分别有什么用途?
.C#中Virtual与override分别有什么用途?
------解决方案--------------------using System; 
 class A 
 { 
   public A() 
   { 
     PrintFields(); 
   }   
   public virtual void PrintFields() 
   {} 
 }   
 class B:A 
 { 
   int x=1; 
   int y; 
   public B() 
   { 
     y=-1; 
   }   
   public override void PrintFields()  
   { 
     Console.WriteLine( "x={0},y={1} ",x,y); 
   } 
 }   
 当使用new B()创建B的实例时,产生什么输出?   
 -------------------------------------------- 
 ========================================= 
 x =1 y =0   
 new B()后首先执行 
 int x=1; 
 int y; 
 再执行B的构造函数时会调用基类构造函数先 于是执行 
 public A() 
   { 
     PrintFields(); 
   } 
 而A中的PrintFields方法是virtual方法且B中已经用override关键字实现了该方法 于是会执行子类B中的PrintFields方法 Console.WriteLine( "x={0},y={1} ",x,y); //注意此时还没有执行到B的构造函数 所以 y值为0   
 而后才执行到B的构造函数//此时 x=1 y =-1; 
 ----------------------------------------------- 
------解决方案--------------------virtual修饰的方法为虚方法,暗示其子类最好有自己的实现   
 override修饰的方法为重写方法,表示覆盖了基类原有方法的实现
------解决方案--------------------高歌起的好早!   
 virtual修饰的方法   
 其子类除了override 还可用new来修饰