java 字父类 构造方法 代码块 加载顺序

时间:2021-02-20 19:33:26
public class Demo {
{
System.out.println("我是demo的内部代码块");

}


static {
System.out.println("我是demo的内部静态代码块");
}

public Demo() {
System.out.println("我是demo的构造方法");
}

static class test3 {
{
System.out.println("我是test3的内部静态类代码块");
}
static {
System.out.println("我是test3的内部静态类的静态代码块");

}


public test3() {
System.out.println("我是test3内部静态类的构造方法");
}
}
}

class Test extends Demo {
static {
System.out.println("我是test方法的静态代码块");
}

public Test() {
System.out.println("我是Test方法的构造方法");
}

public static void main(String[] args) {
new Test();
new Demo();
new Demo.test3();
}

}


程序运行结果:

}java 字父类 构造方法 代码块 加载顺序

程序加载顺序:父类静态代码块——子类静态代码块——父类非静态代码块——父类构造方法——子类非静态代码块——子类构造方法


1. 在运行程序的时候,哪怕对象没有new,当类中有静态代码块,静态代码块会执行。(其实这也可以解释static修饰的方法或者参数是不需要通过对象去调用的,在程序运行的时候就已经就绪了)
2. 当程序内new对象时,首先运行的是对象类中的代码块,然后才是类的构造方法。
3. static修饰的代码块总比没有用static修饰的先运行
4. 当父类中含有static修饰的代码块时候,先运行父类的,再运行子类的 

(这几条总结摘抄java 字父类 构造方法 代码块 加载顺序

静态代码块只执行一次, 构造块(非静态代码块) 调用一次构造方法执行一次