java基础技术知识点总结——初始化

时间:2021-06-04 19:48:55

public class Test {
public static void main(String[] args) {
new Student();
}
}
class Person {
static {
System.out.println("Person的静态代码块");
}
{
System.out.println("Person的普通代码块");
}
public Person(){
System.out.println("Person的构造器");
}
}
class Student extends Person{
static {
System.out.println("Student的静态代码块");
}
{
System.out.println("Student的普通代码块");
}
public Student(){
System.out.println("Student的构造器");
}
}
输出结果:
Person的静态代码块
Student的静态代码块
Person的普通代码块
Person的构造器
Student的普通代码块
Student的构造器
可以观察到,初始化顺序为父类静态代码块>子类静态代码块>父类普通代码块>父类普通代码块>子类普通代码块>子类普通代码块,值得一提的是,如果子类没有使用super();来调用父类构造器,那么默认初始化为父类的无参构造器。

class Person {
public Person(String name){//带有一个参数的构造器
}
}
class Student extends Person{
public Student(){//子类此时这么编写会报错,因为此时父类没有默认的无参构造器,而子类就无法拥有无参构造器。
}
}