源代码:
- public class SuperAndSub {
-
- public static void main(String[] args) {
-
-
-
- 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的构造器
Java类中的各种成员的加载顺序
原文:http://www.cnblogs.com/Yxxxxx/p/6853678.html