VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 889|回复: 2

请教子类初始化的问题

[复制链接]

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-1-17 15:00:01 | 显示全部楼层 |阅读模式
子类实例化的时候会加载父类、子类,初始化父类、子类的变量,调用父类、子类构造方法,这么说就是也会实例化一个父类了?然后实例化结束,这个父类对象就成为了垃圾?
不太清楚,各位大大帮忙解惑,多谢。
回复

使用道具 举报

1

主题

20

帖子

15.00

积分

新手上路

Rank: 1

积分
15.00
发表于 2020-1-22 21:09:02 | 显示全部楼层
这个父类没有任何具体的引用,应该是成为垃圾了吧。

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();
    }
}
回复

使用道具 举报

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表