java 类加载-初始化顺序

本文探讨了Java中不同类型的初始化块(静态与非静态)和构造器的执行顺序及工作原理,通过具体实例展示了这些概念如何在继承的类中交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码:
package com.lczyfz.istep.modules.test.service;

class Root {
static
{
System.out.println("Root的静态初始化块");
}
{
System.out.println("Root的普通初始化块");
}
public Root(){
System.out.println("Root的无参数构造器");
}
}


class Mid extends Root {
static
{
System.out.println("Mid的静态初始化块");
}
{
System.out.println("Mid的普通初始化块");
}
public Mid(){
System.out.println("Mid的无参数构造器");
}
public Mid(String msg){
this();
System.out.println("Mid的带参数构造器,其参数值:" + msg);
}
}

class Leaf extends Mid{
static {
System.out.println("Leaf的静态初始化块");
}
{
System.out.println("Leaf的普通初始化块");
}
public Leaf(){
super("疯狂java讲义");
System.out.println("执行Leaf的构造器");
}
}

public class Test{
public static void main(String[] args){
new Leaf();
new Leaf();
}
}



答案:
Root的静态初始化块
Mid的静态初始化块
Leaf的静态初始化块

Root的普通初始化块
Root的无参数构造器
Mid的普通初始化块
Mid的无参数构造器

Mid的带参数构造器,其参数值:疯狂java讲义
Leaf的普通初始化块
执行Leaf的构造器

Root的普通初始化块
Root的无参数构造器
Mid的普通初始化块
Mid的无参数构造器
Mid的带参数构造器,其参数值:疯狂java讲义
Leaf的普通初始化块
执行Leaf的构造器


============================================================
静态初始化块和声明静态Field时所指定的初始值都是该类的初始化代码,它们的执行顺序与源程序中的排列顺序相同。
代码:
package com.lczyfz.istep.modules.test.service;

/**
* Created by hpp on 2017/4/5.
*/

class Base{
static {
System.out.println("Base static");
}
public Base(){
System.out.println("Base init");
}
}
public class Test1 extends Base{
String m = "";
static String n;
static {
System.out.println("A static");
}
public Test1(String mValue,String nValue){
m = mValue;
n = nValue;
}
public void print(){
System.out.println(m + " " + n);
}

public static void main(String[] args){
Test1 a1 = new Test1("M1","N1");
Test1 a2 = new Test1("M2","N2");
a1.print();
a2.print();
}
答案:
Base static
A static
Base init
Base init
M1 N2
M2 N2

public static void main(String[] args){
Test1 a1 = new Test1("M1","N1");
a1.print();
Test1 a2 = new Test1("M2","N2");
a2.print();
}

答案:
Base static
A static
Base init
M1 N1
Base init
M2 N2

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值