解决方案 »

  1.   

    创建对象的时候,类的一些资源会进行初始化进内存。也就是说,在你创建对象的时候也会对属性进行初始化,应该是在执行构造方法之前,所以show方法中是能调用到属性值的。
      

  2.   


    为什么结果中间有个 num = 0;  ???
      

  3.   

    Fu f2 = new Zi();   这句话没看懂
      

  4.   

    new 一个对象时候,先在堆上开辟一块空间,并清0. 此时Zi的num是0然后基类构造器被调用,因此此时zi的num仍然是0,所有会有一个 0基类构造器完成之后,实例变量初始化,这时zi的nun初始化为111最后 子类构造器执行。
      

  5.   

    Fu f = new Fu();这句代码的执行过程:
    先初始化num的值为10,然后再执行构造器所以输出的num是10Fu f2 = new Zi();
    这句代码的执行过程稍微复杂些,因为涉及继承:
    当然是先构造父类子对象,但是此时num还没有初始化,所以输出的num为0
    然后再构造子类对象,此过程先初始化num为111,然后执行构造函数,输出num为111另外,你若想弄清楚对象创建过程这样的原理性问题,强烈建议你看看《Java编程思想》这本书,就你提的这个问题上面阐述的很清楚的