java类加载先后顺序

java类加载先后顺序,第1张

1.父类静态代码块;

2.子类静态代毕尘慎码块;

3.父类非静态代码块;

4.父类构造函数;

5.子类非静态代码块;

6.子类构造函数;

举例:

public class ExA {

static {

System.out.println("父类静态代手敬码块。")

}

public ExA() {

System.out.println("父类构造函数。")

}

{

System.out.println("父类非静态代码块。")

}

public static void main(String[] args) {

new ExB()

}

}

class ExB extends ExA {

static {

System.out.println("子类静态代码块。")

}

{

System.out.println("子类非静态代码块。")

}

public ExB() {

System.out.println("子类构造函数。")

}

}

执行结果:父类静态代码块。子类静态代码块。父类非静态代码块。父类构造函数。子类非静态代码块。兄陪子类构造函数。

记住 3 条原则:

1、父类优先于子类

2、属性优先于代码块优先于构造方法

3、静态优先于非静态

因此,类加载顺序为竖旦:

父类静态变量->父类静态语句块->子类静态变量->子类静态语句块->父类普通成员变量->父类动态语句块->父类构造器->子类普通成员变量->子逗枯类动态语句块->子类构造器余指扰

基本都对,只有一个凳段闷地方不完全,如果p是继承f类,f也有默认的构造的话,那么顺序应该是这样的,f的构造运行,p的普通构造代燃清码块,加载p的构造函数

简单的说普通初始化代码块是紧跟super()后运行,之后再运行构造枣弯函数其他代码


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12558418.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存