解决方案 »

  1.   

    因为B 继承自A 所以先执行A的构造 后执行B的构造
      

  2.   

    因为你的CLASS B继承自CLASS A
    所以要先执行CLASS A.
      

  3.   

    何况你还写了A a = new B(); 
    a是CLASS A的实例,虽然是用CLASS B的构造将它实例化的,但是也要先构造出CLASS A
      

  4.   

    A a = new B(); //B继承A,所以先执行A的构造函数,再执行B的构造函数
    a.Fun(); //调用A的fun方法//结果
    A
    B
    A.Fun()
      

  5.   

    这就相当于我们常说的  [奔驰汽车] 继承自 [汽车]
    只有先把[汽车]所具有的共性构造出来 才能继续构造[奔驰]从内存模型的角度来说 B类实例分配的空间 开始是他的父类A的空间 如果A还有父类 还会先为其分配空间
    这个也决定了构造顺序 因为要知道分配多少空间
      

  6.   

    这是为什么呢!我理解的就是a只是A的引用 指向B的实例  应该执行B的构造函数呀  因为继承关系要先执行A的构造函数  有点看不懂
      

  7.   

    A,B,A不解释,请百度“overide和new的区别”,然后在百度“你必须知道的.net”
      

  8.   

    类的继承概念是这样:如果子类的构造函数中没有显示地调用父类构造方法,也没有使用this关键字调用重载的其他构造方法,那么在产生子类的实例时,系统默认调用父类的无参构造函数。
    在Main入口函数执行时遇到A a = new B();需要进行实例化,所以在实例化B()的时候,因为B继承自A类,所以首先需要执行A的构造函数,然后打印出A,然后在返回来打印出B,然后a.Fun(),调用方法,发现此方法是A类的虚方法,B类重写了,所以会执行B类的重写的方法,则打印出B.Fun()
    祝你在前进的路上一路好运,哈哈哈