java先默认初始化子类吗,Java 对象初始化顺序

package zhao;

public class TestClass extends BaseClass {

static{

System.out.println("我输出的是 子类静态块内容→"+TestClass.name);//第四步

}

{

System.out.println("我输出的是 子类非静态块内容→"+this.code);//第十三步

}

static String name = "子类静态变量";//第五步

String code ="子类非静态变量初始化";//第十四步

TestClass(){

code = "子类构造方法里该修了的 code 的值";//第十六步

System.out.println("我输出的是 子类构造体→"+code);//第十七步

}

static{

System.out.println("我输出的是 子类静态块内容→"+name);//第六步

}

{

System.out.println("我输出的是 子类非静态块内容→"+code);//第十五步

}

/** *//**

* @param args

*/

public static void main(String[] args) {

new TestClass();

}

}

class BaseClass{

static {

System.out.println("我输出的是 父类静态块内容→"+BaseClass.basename);//第一步,因为basename先初始化默认值!所以为null

}

{

System.out.println("我输出的是 父类非静态块内容→"+this.basecode);//第七步,因为basecode先初始化默认值!所以为null

}

static String basename = "父类静态变量"; //第二步

String basecode ="父类非静态变量初始化";//第八步

BaseClass(){

basecode = "父类构造方法里该修了的 basecode 的值";//第十一步

System.out.println("我输出的是 父类构造体→"+basecode);//第十二步

}

static {

System.out.println("我输出的是 父类静态块内容→"+basename);//第三步

}

{

System.out.println("我输出的是 父类非静态块内容→"+basecode);//第九步

}

}

1:父类静态变量的默认初始化

2.父类静态变量初始化,父类静态块代码(静态变量和静态块代码中,哪个在前面就先执行哪个)

3:子类静态变量的默认初始化

4.子类静态变量,子类静态块代码(静态变量和静态块代码中,哪个在前面就先执行哪个)

5:父类非静态变量的默认初始化

6:父类非静态变量,父类非静态块代码(非静态变量和非静态块代码中,哪个在前面就先执行哪个)

7.父类构造体

8.子类非静态变量的默认初始化

9.子类非静态变量,子类非静态块代码(非静态变量和非静态块代码中,哪个在前面就先执行哪个)

10:子类构造体

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值