java中一个类实例化的加载
程序员文章站
2022-05-14 09:28:22
...
目录
目标
了解一个java对象实例化会执行哪些操作。
一个java对象实例化会和什么有关系?
- 基本数据类型
- 引用数据类型
- static字段
- static代码块
- 构造函数
- 父类
public class A {
String sA; //基本数据类型
static int iA;//static字段
//static代码块
static {
System.out.println("A的静态代码块");
}
//构造函数
public A(){
System.out.println("A 的无参构造函数");
}
public static void main(String[] args) {
B a = new B();
}
}
//父类 B继承A
class B extends A{
String sB;
static int iB;//static字段
static A sA = new A(); //引用数据类型
//static代码块
static {
System.out.println("B的静态代码块");
}
//引用数据类型
A a = new A();
//构造函数
public B(){
System.out.println("B 的无参构造函数");
}
}
//输出结果分析
A的静态代码块 //在执行main方法的时候输出
A 的无参构造函数 //A的静态代码块在上一步已输出,这里不会在次执行,所以只有构造函数的输出
B的静态代码块 //初始化B操作,优先执行static
A 的无参构造函数 //B继承A,这里会实例化A,再次调用A的构造函数
A 的无参构造函数 //A a = new A(); 此处的输出
B 的无参构造函数 //B的构造函数
总结
父类static -》父类初始化 -〉子类static-》子类初始化
static的顺序为代码的执行顺序。
上一篇: mysql数据库自动备份,并发送邮件通知
下一篇: java构造器的调用顺序
推荐阅读