Java类和对象的初始化顺序

发表于:2012-2-29 10:03

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Icansoft    来源:51Testing软件测试网采编

分享:

  Sub类

  1. public class Sub extends Super {   
  2.     public static final int y = 2005;   
  3.     public static int z;   
  4.        
  5.     static {   
  6.         System.out.println("Initialization Sub");   
  7.     }   
  8. }

  Super类

  1. public class Super {   
  2.     public static int x = 2006;   
  3.        
  4.     static {   
  5.         System.out.println("Initialization Super");   
  6.     }   
  7. }

  输入结果

Initialization Main class
2005
Initialization Super
2006
Initialization Sub
0

  从这个结果可以看到,

  1)static块在类中会先执行;(实际上是先加载static成员变量,然后是static代码块)

  2)static 的final变量不会引起类的初始化;

  3)子类Sub引用父类Super里面的变量,就会引起父类的初始化,但不会引起子类的初始化;

  4)static的成员变量也有默认值。

  2、对象的创建(creation of new class instances)

  看例子来说明:

  InitializationOrder类

  1. public class InitializationOrder {   
  2.     public static void main(String[] args) {   
  3.         SubClass sb = new SubClass();   
  4.     }   
  5. }

  SuperClass类

  1. public class SuperClass{   
  2.     static {   
  3.         System.out.println("SuperClass static");   
  4.     }   
  5.    
  6.     SuperClass(String str){   
  7.         System.out.println(str);   
  8.     }   
  9. }

  Interface类

  1. interface Interface{   
  2.     static SuperClass su = new SuperClass("Interface new SuperClass");   
  3. }

  SubClass类

  1. public class SubClass extends SuperClass implements Interface{   
  2.    
  3.     static {   
  4.         System.out.println("SubClass static");   
  5.     }   
  6.    
  7.     private SuperClass su = new SuperClass("initialization variable");   
  8.    
  9.     SubClass() {   
  10.         super("super");   
  11.         new SuperClass("new SuperClass");   
  12.     }   
  13. }

32/3<123>
重磅发布,2022软件测试行业现状调查报告~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计

法律顾问:上海漕溪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2023
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号