java类执行的顺序:
1 父类静态代码块
子类静态属性 自定义
2 子类静态代码块
父类非静态属性 自定义
3 父类匿名代码块
子类非静态属性 默认值 null
4 父类构造器 name = null
子类非静态属性 自定义
5 子类匿名代码块 name = tom
6 子类构造器
package com.free;
class HelloA {//4.进入A代码块
static int A = 10;
int AA = 30;
public HelloA() {//8.执行父类构造器中的其他方法
System.out.println
("A构造器:"+AA);
System.out.println("HelloA");
}
{
System.out.println//7.执行A匿名代码块
("A匿名代码块:"+AA);
System.out.println("I'm A class");
}
static {//5. 进入static静态代码块和静态成员赋值
System.out.println(A);
System.out.println
("HelloA:HelloB.B"+HelloB.B);
System.out.println("static A");
}
}
public class HelloB extends HelloA {//3.继承自A代码块,进入A
static int B = 20;
public int BB = 40;
public HelloB() {
System.out.println
("B构造器:"+BB);
System.out.println("HelloB");
}
{
System.out.println//9.执行子类的匿名代码块
("B匿名代码块:"+BB);
System.out.println("I'm B class");
}
static {//6.执行子类的静态赋值和静态代码块
System.out.println(
"HelloB:HelloB.B"+B);
System.out.println("static B");
}
public static void main(String[] args) {//1.main方法,程序运行的入口
new HelloB();//2.执行 B类代码块
}
输出的结果是:10
HelloA:HelloB.B0
static A
HelloB:HelloB.B20
static B
A匿名代码块:30
I'm A class
A构造器:30
HelloA
B匿名代码块:40
I'm B class
B构造器:40
HelloB
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦