-
public class SuperAndSub {
-
public static void main(String[] args) {
-
// Super s1 = new Sub();
-
// Super s2 = new Super();
-
Sub s3 = new Sub();
-
}
-
}
-
class Super {
-
static int a = getA();
-
static {
-
System.out.println("加载Super的静态块");
-
}
-
int b = getB();
-
{
-
System.out.println("加载Super的普通块");
-
}
-
Super() {
-
System.out.println("加载Super的构造器");
-
}
-
static int getA() {
-
System.out.println("加载Super的静态变量");
-
return 1;
-
}
-
static int getB() {
-
System.out.println("加载Super的实例变量");
-
return 2;
-
}
-
}
-
class Sub extends Super {
-
static int c = getC();
-
static {
-
System.out.println("加载Sub的静态块");
-
}
-
int d = getD();
-
{
-
System.out.println("加载Sub的普通块");
-
}
-
Sub() {
-
System.out.println("加载Sub的构造器");
-
}
-
static int getC() {
-
System.out.println("加载Sub的静态变量");
-
return 1;
-
}
-
static int getD() {
-
System.out.println("加载Sub的实例变量");
-
return 2;
-
}
-
}
输出:
-
加载Super的静态变量
-
加载Super的静态块
-
加载Sub的静态变量
-
加载Sub的静态块
-
加载Super的实例变量
-
加载Super的普通块
-
加载Super的构造器
-
加载Sub的实例变量
-
加载Sub的普通块
-
加载Sub的构造器