java类中的各种成员的加载顺序

 

 
  1. public class SuperAndSub {

  2.  
  3. public static void main(String[] args) {

  4.  
  5. // Super s1 = new Sub();

  6. // Super s2 = new Super();

  7. Sub s3 = new Sub();

  8. }

  9. }

  10.  
  11. class Super {

  12.  
  13. static int a = getA();

  14.  
  15. static {

  16. System.out.println("加载Super的静态块");

  17. }

  18.  
  19. int b = getB();

  20.  
  21. {

  22. System.out.println("加载Super的普通块");

  23. }

  24.  
  25. Super() {

  26. System.out.println("加载Super的构造器");

  27. }

  28.  
  29. static int getA() {

  30. System.out.println("加载Super的静态变量");

  31. return 1;

  32. }

  33.  
  34. static int getB() {

  35. System.out.println("加载Super的实例变量");

  36. return 2;

  37. }

  38.  
  39. }

  40.  
  41. class Sub extends Super {

  42.  
  43. static int c = getC();

  44.  
  45. static {

  46. System.out.println("加载Sub的静态块");

  47. }

  48.  
  49. int d = getD();

  50.  
  51. {

  52. System.out.println("加载Sub的普通块");

  53. }

  54.  
  55. Sub() {

  56. System.out.println("加载Sub的构造器");

  57. }

  58.  
  59. static int getC() {

  60. System.out.println("加载Sub的静态变量");

  61. return 1;

  62. }

  63.  
  64. static int getD() {

  65. System.out.println("加载Sub的实例变量");

  66. return 2;

  67. }

  68. }

输出:

 
  1. 加载Super的静态变量

  2. 加载Super的静态块

  3. 加载Sub的静态变量

  4. 加载Sub的静态块

  5. 加载Super的实例变量

  6. 加载Super的普通块

  7. 加载Super的构造器

  8. 加载Sub的实例变量

  9. 加载Sub的普通块

  10. 加载Sub的构造器

猜你喜欢

转载自blog.csdn.net/qq_35568099/article/details/82427741
今日推荐