[转帖]初始化顺序_Android, Python及开发编程讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Android, Python及开发编程讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3448 | 回复: 0   主题: [转帖]初始化顺序        下一篇 
只是很无聊
注册用户
等级:中尉
经验:440
发帖:33
精华:0
注册:2013-6-18
状态:离线
发送短消息息给只是很无聊 加好友    发送短消息息给只是很无聊 发消息
发表于: IP:您无权察看 2013-6-18 15:52:26 | [全部帖] [楼主帖] 楼主

  1. package initialSeq; 
  2. public class Parent 
  3.        private static int i = 10; 
  4.        static 
  5.        { 
  6.              System.out.println(i); 
  7.              System.out.println("Init parent static block"); 
  8.        } 
  9.        { 
  10.              System.out.println("Init parent program block"); 
  11.        } 
  12.       
  13.        public Parent() 
  14.        { 
  15.              System.out.println("Init parent structure"); 
  16.        } 
  17.        public int method() 
  18.        { 
  19.              return ++i; 
  20.        } 


  1. package initialSeq; 
  2. public class Child extends Parent 
  3.        private static String str = "Hello"; 
  4.        static 
  5.        { 
  6.              System.out.println(str); 
  7.              System.out.println("Init child static block"); 
  8.        } 
  9.        { 
  10.              System.out.println("Init child program block"); 
  11.        } 
  12.       
  13.        public Child() 
  14.        { 
  15.              System.out.println("Init child structure"); 
  16.        } 
  17.       
  18.        public static void main(String args[]) 
  19.        { 
  20.              Child c = new Child(); 
  21.              System.out.println(c.method()); 
  22.              System.out.println("-----I am a cut-off line----"); 
  23.              Child c1 = new Child(); 
  24.              System.out.println(c1.method()); 
  25.        } 



输出结果:

    10  Init parent static block  Hello  Init child static block  Init parent program block  Init parent structure  Init child program block  Init child structure  11  -----I am a cut-off line----  Init parent program block  Init parent structure  Init child program block  Init child structure  12  



    初始化顺序:父类静态变量->父类静态快->子类静态变量->子类静态块->父类程序块->父类构造函数->子类程序块->子类构造函数。

    当我们new子类对象的时候会想加载父类和子类,这时父类和子类静态变量及静态块被初始化,后面接着的顺序父类程序块,父类构造函数子类程序块, 子类够着函数,相信大家应该都好理。由于第二次再new子类对象的时候,父类和子类已经被加载过了,所以就不会重复加载,即不会重复初始化静态变量及静态 块,所以在第二次new Child的时候没有静态块的内容输出,并且父类的i的值没有被初始化为10。




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论