一文了解Java类的初始化_极悦注册
专注Java教育14年 全国咨询/投诉热线:444-1124-454
极悦LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 Java学习 一文了解Java类的初始化

一文了解Java类的初始化

更新时间:2022-11-29 11:03:24 来源:极悦 浏览864次

Java类的初始化是什么?极悦小编来告诉大家。

1.单一类的初始化顺序

顺序依次是:

类的静态部分(静态代码块 + 静态域(类的static变量))

非静态部分(构造代码块 + 非静态域)

构造器

class Demo{
    Demo(int id){
        System.out.println("DEMO "+ id);
    }
}
public class InitTest {
    Demo d = new Demo(0);
    static Demo d1 = new Demo(1);
    InitTest(){
        System.out.println("InitTest");
    }
    {
        System.out.println("构造代码块");
    }
    static {
        System.out.println("静态代码块");
    }
    static Demo d2 = new Demo(2);
    Demo d3 = new Demo(3);
    public static void main(String[] args) {
        new InitTest();
    }
}
/*
DEMO 1
静态代码块
DEMO 2
DEMO 0
构造代码块
DEMO 3
InitTest
*/

2.继承中的初始化顺序

父类的静态部分(静态代码块 + 静态域(类的static变量))

子类的静态部分(静态代码块 + 静态域(类的static变量))

父类的非静态部分(构造代码块 + 非静态域)

父类的构造器

子类的非静态部分(构造代码块 + 非静态域)

子类的构造器

class Other{
    Other(String str){
        System.out.println(str + "调用");
    }
}
class Sup{
    Other s0 = new Other("父类Others0");
    Sup(){
        System.out.println("父类的默认构造");
    }
    Sup(int id){
        System.out.println("Sup " + id);
    }
    static Other s1 = new Other("父类static Others1");
    static {
        System.out.println("父类的静态代码块");
    }
    static Other s2 = new Other("父类static Others2");
    Other s3 = new Other("父类Others3");
    {
        System.out.println("父类的构造代码块");
    }
}
class Sub extends Sup{
    Other s0 = new Other("子类Others0");
    Sub(){
        System.out.println("子类的默认构造");
    }
    Sub(int id){
        System.out.println();
    }
    static Other s1 = new Other("子类static Others1");
    {
        System.out.println("子类的构造代码块");
    }
    static {
        System.out.println("子类的静态代码块");
    }
    Other s2 = new Other("子类Others2");
    static Other s3 = new Other("子类static Others3");
}
public class InheritInit {
    public static void main(String[] args) {
        new Sub();
    }
}
/*
父类static Others1调用
父类的静态代码块
父类static Others2调用
子类static Others1调用
子类的静态代码块
子类static Others3调用
父类Others0调用
父类Others3调用
父类的构造代码块
父类的默认构造
子类Others0调用
子类的构造代码块
子类Others2调用
子类的默认构造
*/

以上就是关于“一文了解Java类的初始化”介绍,大家如果想了解更多相关知识,不妨来关注一下本站的Java教程,里面还有更丰富的知识等着大家去学习,希望对大家能够有所帮助哦。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>