困了好长时间的问题了,请指点小弟一下
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为已有的呢 ? --------------------编程问答-------------------- B的构造会调用A的构造,之前会先初始化x,然后有A的构造修改x值 --------------------编程问答-------------------- 楼上+1 --------------------编程问答-------------------- 通俗的讲,这里的x是你爹的基因,虽然你身上也有,但是本质并不是你的,而是你爹的.
所以这里对x的操作其实是对A的操作,虽然是通过B来做的,但是本质上x就是A的,B在这个例子里并没有x这个东西.所以也谈不上B把x继承下来.
继承的本质并不是基因的传递,而是基因效果的传递,就是说,作为儿子,拥有基因,如果你不改,那么这份基因其实并不是你的,而是你父辈的.当然如果你重写的话,就相当于对基因的改造,以后你的孩子就是拥有你改造后的基因.
--------------------编程问答--------------------
净屁啊 --------------------编程问答--------------------
+1
--------------------编程问答--------------------
人家说的不对啊? --------------------编程问答-------------------- 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();
}
} --------------------编程问答-------------------- 结果:
A0
b1
自己去理解吧
补充:.NET技术 , C#