class A
{ private int x;
  public A( int i ) { x = i; }
};class B : A
{ private int y;
  public B( int i, int j ):A(i) { y = j; }
};
B b3 = new B(0,1); 
请问当程序执行了B b3 = new B(0,1)时,是调用A类的构造
函数来为已经继成下来的X赋值还是先实例A类给X赋值,再来继成X为已有的呢 ?

解决方案 »

  1.   

    B的构造会调用A的构造,之前会先初始化x,然后有A的构造修改x值
      

  2.   

    通俗的讲,这里的x是你爹的基因,虽然你身上也有,但是本质并不是你的,而是你爹的.
    所以这里对x的操作其实是对A的操作,虽然是通过B来做的,但是本质上x就是A的,B在这个例子里并没有x这个东西.所以也谈不上B把x继承下来.
    继承的本质并不是基因的传递,而是基因效果的传递,就是说,作为儿子,拥有基因,如果你不改,那么这份基因其实并不是你的,而是你父辈的.当然如果你重写的话,就相当于对基因的改造,以后你的孩子就是拥有你改造后的基因.
      

  3.   

    class A
    { private int x;
      public A( int i ) { x = i;
       Console.WriteLine("A"+i.ToString());}
    };class B : A
    { private int y;
      public B( int i, int j ):base(i) 
      { y = j;
       Console.WriteLine("b"+j.ToString());}
    };
     
        class Program
        {
            static void Main(string[] args)
            {
                B b3 = new B(0,1);
                Console.ReadKey();
            }
        }