请写出以上代码的执行结果:
根据你编码顺序,从上至下运行
非静态变量和普通代码块,优于构造器
构造器最后执行非静态变量和普通代码块按照编码顺序执行。
父类的静态属性加载完会加载子类的静态属性
子父静态加载完——>加载父类
public static void main(String[] args) {
System.out.println("1");//输出1;
new D();
}
运行输出1
class D extends C
class C extends B
class B {
E e = new E();
static F f = new F();//先执行等号右边,创建一个F类,构造器执行输出4
public String sb = getSb();
static {
System.out.println("6");//然后执行输出6
f.funcOff();//F类中funcoff构造方法输出5
}
{
System.out.println("7");
}
B() {
System.out.println("8");
e.funcOff();
}
public String getSb() {
System.out.println("9");
return "sb";
}
}
class C extends B {
static {System.out.println("10");} //输出10
{System.out.println("11");}
C() {System.out.println("12");}
}
class D extends C {
public String sd1 = getSd1();
public static String sd = getSd();//等号右边先执行,getSd()当中的值返回给sd,输出16
static {System.out.println("13");}//输出13
{System.out.println("14");}
D() {System.out.println("15");}
static public String getSd() {
System.out.println("16");
return "sd";
}
public String getSd1(){
System.out.println("17");
return "sd1";}
}
父类的静态属性加载完会加载子类的静态属性
子父静态加载完——>加载父类
class B {
E e = new E();//E类中E构造器执行输出2
static F f = new F();////静态已执行
public String sb = getSb();//getsb()构造器输出9
static {
System.out.println("6");
f.funcOff();
}//静态已执行
{
System.out.println("7");
}//输出7
B() {
System.out.println("8");//输出8
e.funcOff();//E类中,funcOff()构造器执行输出3
}
public String getSb() {
System.out.println("9");
return "sb";
}
}
class C extends B {
static {
System.out.println("10");
}////静态已执行
{
System.out.println("11");
}//输出11
C() {
System.out.println("12");
}//输出12
}
7.加载D
class D extends C {
public String sd1 = getSd1();//gerSd1()构造器输出17
public static String sd = getSd();//静态已执行
static {System.out.println("13");}//静态已执行
{System.out.println("14");}//输出14
D() {System.out.println("15")}
static public String getSd() {
System.out.println("16");
return "sd";
}//静态已执行
public String getSd1(){
System.out.println("17");
return "sd1";
}
}
public static void main(String[] args) {
System.out.println("1");//已经执行
new D();//输出D类中D()构造器执行输出15
}
最后结果1 4 6 5 10 16 13 2 9 7 8 3 11 12 17 14 15
本文地址:https://blog.csdn.net/qq_42455310/article/details/107691012
如对本文有疑问, 点击进行留言回复!!
idea 访问html页面端口号显示的是63342而不是8080
网友评论