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

xiaoxiao2021-02-28  82

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(){//子类此时这么编写会报错,因为此时父类没有默认的无参构造器,而子类就无法拥有无参构造器。 } }
转载请注明原文地址: https://www.6miu.com/read-57320.html

最新回复(0)