当前位置:编程学习 > C#/ASP.NET >>

困了好长时间的问题了,请指点小弟一下

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继承下来.
继承的本质并不是基因的传递,而是基因效果的传递,就是说,作为儿子,拥有基因,如果你不改,那么这份基因其实并不是你的,而是你父辈的.当然如果你重写的话,就相当于对基因的改造,以后你的孩子就是拥有你改造后的基因.
--------------------编程问答--------------------
引用 3 楼  的回复:
通俗的讲,这里的x是你爹的基因,虽然你身上也有,但是本质并不是你的,而是你爹的.
所以这里对x的操作其实是对A的操作,虽然是通过B来做的,但是本质上x就是A的,B在这个例子里并没有x这个东西.所以也谈不上B把x继承下来.
继承的本质并不是基因的传递,而是基因效果的传递,就是说,作为儿子,拥有基因,如果你不改,那么这份基因其实并不是你的,而是你父辈的.当然如果你重写的话,就相当于对基因的改造,……

净屁啊 --------------------编程问答--------------------
引用 4 楼  的回复:
引用 3 楼  的回复:

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


+1
--------------------编程问答--------------------
引用 4 楼  的回复:
引用 3 楼 的回复:

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

人家说的不对啊? --------------------编程问答-------------------- 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#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,