一道小小面试题的细节分析

今天突然想到以前遇到的一个问题,题目如下(可能绝大多数人都遇到过):

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);
         }
     }


问题:实例化类B时输出什么结果 B b = new B();

答案:x=1, y=0

 

 

知识点:
1.类的实例化过程。new B();1、先初始化之类的字段X=1 y=0,接着实例化父类(A)的构造函数,然后在调用子类(B)的构造函数。

 

原文地址:https://www.cnblogs.com/51net/p/2997813.html