Java Subclass子类实例化过程分析

发布时间:2025-07-28 17:27:01 作者:小樊
来源:亿速云 阅读:98

在Java中,当创建一个子类的实例时,实例化过程会涉及到父类和子类的构造方法。以下是子类实例化的详细过程:

  1. 分配内存空间:首先为子类对象分配内存空间,大小为子类所有成员变量之和。

  2. 调用父类构造方法:在子类构造方法的第一行,默认会调用父类的无参构造方法。如果父类没有无参构造方法,那么子类构造方法必须使用super关键字显式调用父类的有参构造方法。

  3. 初始化父类成员变量:按照父类成员变量的声明顺序,为父类成员变量分配内存并赋初值。

  4. 调用父类初始化块:按照父类静态初始化块和实例初始化块的顺序执行,完成父类的初始化操作。

  5. 初始化子类成员变量:按照子类成员变量的声明顺序,为子类成员变量分配内存并赋初值。

  6. 调用子类初始化块:按照子类静态初始化块和实例初始化块的顺序执行,完成子类的初始化操作。

  7. 执行子类构造方法:最后执行子类构造方法中的代码,完成子类对象的初始化。

下面是一个简单的例子来说明子类实例化的过程:

class Parent {
    static {
        System.out.println("Parent static block");
    }

    {
        System.out.println("Parent instance block");
    }

    public Parent() {
        System.out.println("Parent constructor");
    }
}

class Child extends Parent {
    static {
        System.out.println("Child static block");
    }

    {
        System.out.println("Child instance block");
    }

    public Child() {
        super(); // 显式调用父类构造方法
        System.out.println("Child constructor");
    }
}

public class Main {
    public static void main(String[] args) {
        Child child = new Child();
    }
}

输出结果:

Parent static block
Child static block
Parent instance block
Parent constructor
Child instance block
Child constructor

从输出结果可以看出,子类实例化过程中,先执行父类的静态初始化块,然后执行子类的静态初始化块,接着执行父类的实例初始化块和构造方法,最后执行子类的实例初始化块和构造方法。

推荐阅读:
  1. 怎么调用java构造方法
  2. Java中怎么实现类的初始化顺序

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java

上一篇:Ansible与云服务如何结合使用

下一篇:Java Subclass子类静态代码块执行顺序

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》