一、构造块和静态代码块的考点
### --- 案例题目
~~~ ——> 先执行父类的静态代码块,再执行子类的静态代码块。
~~~ ——> 执行父类的构造块,执行父类的构造方法体。
~~~ ——> 执行子类的构造块,执行子类的构造方法体。
二、编程代码
package com.yanqi.task08;
import java.sql.SQLOutput;
public class SuperTest {
{
System.out.println("SuperTest类中的构造块!"); // (2) c
}
static {
System.out.println("SuperTest类中的静态代码块!"); // (1) a
}
public SuperTest() {
System.out.println("SuperTest类中的构造方法体!"); // (3) d
}
public static void main(String[] args) {
// 使用无参方式构造对象
SuperTest st = new SuperTest();
}
}
三、编译打印
D:\JAVA\jdk-11.0.2\bin\java.exe "-javaagent:D:\IntelliJIDEA\IntelliJ IDEA 2019.3.3\lib\idea_rt.jar=56441:D:\IntelliJIDEA\IntelliJ IDEA 2019.3.3\bin" -Dfile.encoding=UTF-8 -classpath E:\NO.Z.10000——javaproject\NO.H.00001.javase\javase\out\production\javase com.yanqi.task08.SuperTest
SuperTest类中的静态代码块!
SuperTest类中的构造块!
SuperTest类中的构造方法体!
Process finished with exit code 0
一、构造块和静态代码块的考点
### --- 案例题目
——> 先执行父类的静态代码块,再执行子类的静态代码块。
——> 执行父类的构造块,执行父类的构造方法体。
——> 执行子类的构造块,执行子类的构造方法体。
二、编程代码
package com.yanqi.task08;
// 导入java目录中lang目录中System类中的静态成员out 很少使用
import static java.lang.System.out;
public class SubSuperTest extends SuperTest {
{
System.out.println("==========SubSuperTest类中的构造块!"); // (2) e
}
static {
System.out.println("==========SubSuperTest类中的静态代码块!"); // (1) b
}
public SubSuperTest() {
//System.out.println("==========SubSuperTest类中的构造方法体!"); // (3) f
out.println("==========SubSuperTest类中的构造方法体!");
}
public static void main(String[] args) {
// 使用无参方式构造子类的对象
SubSuperTest sst = new SubSuperTest();
}
}
三、编译打印
D:\JAVA\jdk-11.0.2\bin\java.exe "-javaagent:D:\IntelliJIDEA\IntelliJ IDEA 2019.3.3\lib\idea_rt.jar=58464:D:\IntelliJIDEA\IntelliJ IDEA 2019.3.3\bin" -Dfile.encoding=UTF-8 -classpath E:\NO.Z.10000——javaproject\NO.H.00001.javase\javase\out\production\javase com.yanqi.task08.SubSuperTest
SuperTest类中的静态代码块!
==========SubSuperTest类中的静态代码块!
SuperTest类中的构造块!
SuperTest类中的构造方法体!
==========SubSuperTest类中的构造块!
==========SubSuperTest类中的构造方法体!
Process finished with exit code 0