继承关系下对象的初始化顺序是笔试中常见的知识点,这里不多说,直接上代码:
class Person{
public static Degree degree=new Degree("父类的静态");
public Degree degree1 =new Degree("父类的非静态");
{
System.out.println("这是父类的初始化块");
}
static {
System.out.println("这是父类的静态初始化块");
}
public Person() {
System.out.println("这是父类的构造方法");
}
}
class Stu extends Person{
public static Degree degree=new Degree("子类的静态");
public Degree degree1 =new Degree("子类的非静态");
{
System.out.println("这是子类的初始化块");
}
static {
System.out.println("这是子类的静态初始化块");
}
public Stu() {
System.out.println("这是子类的构造方法");
}
}
class Degree{
public Degree(String i) {
System.out.println("这是"+i+"成员变量");
}
}
public class test{
public static void main(String[] args) {
new Stu();
}
}
运行结果为:
这是父类的静态成员变量
这是父类的静态初始化块
这是子类的静态成员变量
这是子类的静态初始化块
这是父类的非静态成员变量
这是父类的初始化块
这是父类的构造方法
这是子类的非静态成员变量
这是子类的初始化块
这是子类的构造方法