//关于继承关系中的执行顺序:
//1.首先进行的是类加载,其次是创建对象
//2.创建子类时,优先加载父类,所以父类先执行
//3.父类的静态部分优先执行,其次是子类的静态部分,各类的静态部分优先级一样,按照顺序执行
//4.对于普通属性的初始化和普通代码块,两者的优先级一样
//5.在构造器中,隐藏了super和普通代码块(普通属性的初始化),所以优先执行这两者
public class Block {
public static void main(String[] args) {
new BB();
}
}
class AA {
public static int n1 = getN1();
{
System.out.println("AA的普通代码块...");
}
static {
System.out.println("AA的静态代码块...");
}
public AA() {
System.out.println("AA的构造器...");
}
private int n2 = getN2();
public static int getN1() {
System.out.println("getN1被调用...");
return 100;
}
public static int getN2() {
System.out.println("getN2被调用...");
return 200;
}
}
class BB extends AA {
public static int n3 = getN3();
{
System.out.println("BB的普通代码块...");
}
static {
System.out.println("BB的静态代码块...");
}
public BB() {
System.out.println("BB的构造器...");
}
private int n4 = getN4();
public static int getN3() {
System.out.println("getN3被调用...");
return 100;
}
public static int getN4() {
System.out.println("getN4被调用...");
return 200;
}
}
关于继承中代码块,静态成员和普通成员的执行顺序
最新推荐文章于 2022-12-26 02:26:03 发布