子类实例化的时候会加载父类、子类,初始化父类、子类的变量,调用父类、子类构造方法,这么说就是也会实例化一个父类了?然后实例化结束,这个父类对象就成为了垃圾?
不太清楚,各位大大帮忙解惑,多谢。

解决方案 »

  1.   

    这个父类没有任何具体的引用,应该是成为垃圾了吧。lz再看这段代码class X
    {
        Y b = new Y();    X()
        {
    System.out.println("X");
        }
    }class Y
    {
        Y()
        {
    System.out.println("Y");
        }
    }public class Test extends X
    {
        Y y = new Y();    Test()
        {
    System.out.println("Z");
        }    public static void main(String[] args)
        {
    new Test();
        }
    }
      

  2.   

    看了一些以前的相关文章。现在已经明白了,哈哈。
    我总结了一下:
    1.装载、静态初始化。从main()开始,先是装载器启动,它会搜索关键字"extends",从下到上把相关的类都装载。然后从root base class开始静态初始化。
    2.继续main().
    3.instance变量(实例变量)初始化总是先于构造方法的。若main()中实例化对象,那么从root base class开始初始化instance变量,执行构造方法。最后到main()所在类初始化instance变量,执行构造方法。
    4.继续main().