java类的初始化和对象的创建顺序
来源:互联网 发布:网卡mac地址 编辑:程序博客网 时间:2024/05/17 23:02
学习java编程思想--类的初始化p146
类的加载顺序
* 1加载器启动找到 xxx.class文件,通过extends关键字寻找基类,先加载基类
* 2类初始化先初始化static成员变量和static--->
* 2先初始化父类的static成员变量和static
* 3再初始化本类的static成员变量和static
* 类加载之后,对象创建开始
* 1先加载父类的非静态成员变量(静态成员变量在类初始化的时候已经加载,非静态成员变量要随对象的创建而初始化)
* 2先加载父类的构造函数
* 3再加载本类的非静态成员变量
* 4再加载本类的构造函数
*
总体:
* -->表示顺序
* 父类-->子类
* 静态-->非静态
* 类-->对象
* static随类的加载而加载
* 非static成员变量随对象的创建而加载
* 成员变量先于构造器加载
1 package com.test.java.classs; 2 3 /** 4 * Created by Administrator on 2015/12/8. 5 * 类的加载顺序 6 * 1加载器启动找到 xxx.class文件,通过extends关键字寻找基类,先加载基类 7 * 2类初始化先初始化static成员变量和static---> 8 * 2先初始化父类的static成员变量和static 9 * 3再初始化本类的static成员变量和static10 * 类加载之后,对象创建开始加载11 * 1先加载父类的非静态成员变量(静态成员变量在类初始化的时候已经加载,非静态成员变量要随对象的创建而初始化)12 * 2先加载父类的构造函数13 * 3再加载本类的非静态成员变量14 * 4再加载本类的构造函数15 *16 * 总体:17 * -->表示顺序18 * 父类-->子类19 * 静态-->非静态20 * 类-->对象21 * static随类的加载而加载22 * 非static成员变量随对象的创建而加载23 * 成员变量先于构造器加载24 *25 */26 public class ClassLoadOrder extends Father{27 //2父类的static成员变量加载完之后 开始加载子类的static域28 private static int k = printInt("child static k initialized");29 //5 子类的非静态成员变量初始化30 private int m = printInt("child 非static 变量加载");31 32 //子类的构造器加载33 public ClassLoadOrder() {34 System.out.println("child constructor initialized");35 System.out.println("k="+k);36 System.out.println("j="+j);37 }38 39 static {40 System.out.println("child static initialized");41 }42 static int printInt2(){43 System.out.println("child static function initialized");44 return 50;45 }46 47 public static void main(String[] args) {48 ClassLoadOrder c = new ClassLoadOrder();49 }50 }51 52 class Father{53 private int i=9;54 protected int j;55 //4 父类构造器加载56 Father(){57 System.out.println("father constructor initialized");58 System.out.println("i="+i+",j="+j);59 j=39;60 }61 //3 对象创建时,先初始化父类的非静态成员变量62 int n = printInt("father 非static变量加载");63 //1先加载父类的static域64 static {65 System.out.println("father static initialized");66 }67 //168 private static int x1 = printInt("father static .x1 initialized");69 static int printInt(String s ){70 System.out.println(s);71 return 47;72 }73 }
结果:
father static initialized
father static .x1 initialized
child static k initialized
child static initialized
father 非static变量加载
father constructor initialized
i=9,j=0
child 非static 变量加载
child constructor initialized
k=47
j=39
0 0
- java类的初始化和对象的创建顺序
- Java类和对象的初始化顺序
- Java类和对象的初始化顺序
- Java 类和对象的初始化过程及初始化顺序
- Java 类和对象的初始化过程及初始化顺序
- [Java] Java类属性和对象属性的初始化顺序
- Java基础巩固:类和对象的初始化顺序
- JAVA类属性和对象属性的初始化顺序
- java中在创建对象时候的初始化顺序
- Java创建对象的初始化顺序(转载)
- java类与对象的初始化顺序
- Java类及对象初始化的顺序
- Java类与对象的初始化顺序
- java类对象的初始化顺序
- java对象的初始化顺序
- java对象的初始化顺序
- java对象的初始化顺序
- JAVA对象的初始化顺序
- 洛谷 P1016 旅行家的预算
- java反射实现动态代理
- java中复制对象通过反射或序列化
- ajx的请求
- 附近的人位置距离计算方法
- java类的初始化和对象的创建顺序
- java变量的加载顺序
- java继承覆盖与向上转型,权限
- UIImagePickerController选择图片发送后旋转90度的问题
- APP中一种在Java层实现的简单守护进程方式
- PAT基础编程题目集 4-6 求单链表结点的阶乘和
- ehcache报错
- 凹凸映射 Bump mapping(unityshader入门精要学习笔记)
- java字符编码和oracle乱码