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为已有的呢 ?
{ 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为已有的呢 ?
所以这里对x的操作其实是对A的操作,虽然是通过B来做的,但是本质上x就是A的,B在这个例子里并没有x这个东西.所以也谈不上B把x继承下来.
继承的本质并不是基因的传递,而是基因效果的传递,就是说,作为儿子,拥有基因,如果你不改,那么这份基因其实并不是你的,而是你父辈的.当然如果你重写的话,就相当于对基因的改造,以后你的孩子就是拥有你改造后的基因.
{ 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();
}
}