A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© jojo 中级黑马   /  2015-1-14 21:34  /  1378 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. package com.bocsoft.study;
  2. /**
  3. *
  4. * @author jojo
  5. * 时间:2015-1-14
  6. */
  7. public class InialTest {

  8.         public static void main(String[] args) {       
  9.                 Son s = new Son();
  10.         }
  11. }

  12. class Father {
  13.         private Info info1 = new Info("父类非静态变量初始化");
  14.         private static Info info2 = new Info("父类静态变量初始化");
  15.         Father(){
  16.                 System.out.println("父类构造函数执行");
  17.         }
  18.        
  19.         static{
  20.                 Info info3 = new Info("父类静态代码块执行");
  21.         }
  22.         {
  23.                 Info info4 = new Info("父类构造代码块执行");
  24.         }
  25. }

  26. class Son extends Father{
  27.        
  28.         private Info info1 = new Info("子类非静态变量初始化");
  29.         private static Info info2 = new Info("子类静态变量初始化");
  30.        
  31.         Son(){
  32.                 System.out.println("子类构造函数执行");
  33.         }
  34.        
  35.         static{
  36.                 Info info3 = new Info("子类静态代码块执行");
  37.         }
  38.         {
  39.                 Info info4 = new Info("子类构造代码块执行");
  40.         }
  41. }

  42. class Info {
  43.         Info(String message){
  44.                 System.out.println(message);
  45.         }
  46. }
复制代码
好了,废话不多说,一个程序就能说明所有初始化顺序的问题了,送给需要的朋友了。代码可以直接copy,然后运行。需要注意的是,子类成员初始化是在父类构造函数执行之后,子类构造函数执行之前,相信不少人会忽略这一问题。
程序运行的结果如下:
父类静态变量初始化
父类静态代码块执行
子类静态变量初始化
子类静态代码块执行
父类非静态变量初始化
父类构造代码块执行
父类构造函数执行
子类非静态变量初始化
子类构造代码块执行
子类构造函数执行

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1 淡定

查看全部评分

7 个回复

倒序浏览
测试到位,不错
回复 使用道具 举报
多谢分享
回复 使用道具 举报
细看程序 不叫好 只是偷偷记
回复 使用道具 举报
刚学这个,然后来巩固下,不错不错
回复 使用道具 举报
嘿嘿,自己给自己顶一个!
回复 使用道具 举报
yumin 中级黑马 2015-1-17 18:55:37
7#
不多,顶起
回复 使用道具 举报
非常感谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马