Java类、类属性、静态块、实例、实例属性、实例块初始化顺序
来源:互联网 发布:mac系统怎样翻墙 编辑:程序博客网 时间:2024/05/19 14:51
总的来说:先加载类,在加载实例
顺序如下:
1、类属性,也叫静态属性(含静态代码块,就是属性前面加了static的那种),只加载一次。父类加载在子类前。
在类加载器加载该类的时候加载。
2、实例属性,也叫非静态属性。父类在子类之前。
在生成实例的时候加载(构造方法之前)。
3、构造方法,先父类,后子类。
生成实例的时候会调用构造方法(实例属性加载完调用构造方法)。
2.3俩点有个要注意的地方:加载完父类实例属性后会加载父类构造方法,然后再加载子类实力属性以及子类构造方法。
不多说,直接上例子。
1、Print.java
package com.yuyubing.lambda;public class Print {public Print(int i) {System.out.println("instance print: " + i);}public Print(int i, PrintType type) {if (type == PrintType.PARENTS) {System.out.println("parent static print: " + i);} else {System.out.println("son static print: " + i);}}enum PrintType {PARENTS,SON}}
2、Parents.java
package com.yuyubing.lambda;import com.yuyubing.lambda.Print.PrintType;public class Parents {private static Print param5 = new Print(5, PrintType.PARENTS);static {System.out.println("parents static block");}private static Print param6 = new Print(6, PrintType.PARENTS);private Print param1 = new Print(1);{System.out.println("parents instance block");}public Parents() {System.out.println("parents construction method ");}private Print param2 = new Print(2);}
3、Son.java
package com.yuyubing.lambda;import com.yuyubing.lambda.Print.PrintType;public class Son extends Parents {private Print param1 = new Print(3);private static Print param7 = new Print(7, PrintType.SON);static {System.out.println("son static block");}private static Print param8 = new Print(8, PrintType.SON);{System.out.println("son instance block");}public Son() {System.out.println("son construction method ");}private Print param2 = new Print(4);}
4、Hello.java
package com.yuyubing.lambda;public class Hello { public static void main(String[] args) { Son son1 = new Son();Son son2 = new Son(); } }
运行结果如下:
parent static print: 5
parents static block
parent static print: 6
son static print: 7
son static block
son static print: 8
instance print: 1
parents instance block
instance print: 2
parents construction method
instance print: 3
son instance block
instance print: 4
son construction method
instance print: 1
parents instance block
instance print: 2
parents construction method
instance print: 3
son instance block
instance print: 4
son construction method
- Java类、类属性、静态块、实例、实例属性、实例块初始化顺序
- java静态初始化块、实例初始化块
- Java 类的实例变量初始化的过程 静态块、非静态块、构造函数的加载顺序
- Java类静态属性、静态块、非静态属性、非静态块、构造函数在初始化时的执行顺序
- Java类静态属性、静态块、非静态属性、非静态块、构造函数在初始化时的执行顺序
- Java类静态属性、静态块、非静态属性、非静态块、构造函数在初始化时的执行顺序
- java类加载和实例化:静态代码块、初始化代码块、构造方法的执行顺序
- java,实例初始化块,静态初始化块,clone方法
- Java类中静态属性、静态语句块、属性、初始化语句块、构造函数之间的执行顺序
- 静态初始化块和实例化块
- Java父类与子类中静态代码块 实例代码块 静态变量 实例变量 构造函数执行顺序
- Java初始化顺序,静态变量,static块,实例变量,构造器的初始化顺序
- 域初始化、静态块及构造方法等在创建类实例时的执行顺序
- 域初始化、静态块及构造方法等在创建类实例时的执行顺序
- java类 静态实例初始化顺序
- java类的初始化块/执行顺序,实例化对象数据赋值
- 有关于在Java 类的静态初始化块中创建一个自身实例的问题。
- Java普通代码块,构造代码块,静态代码块区别,执行顺序的代码实例
- 安装anaconda和jupyter
- PVB开源的组态开发组件
- vs2013链接问题:module machine type 'x64' conflicts with target machine type 'X86'
- Gradle Error: Execution failed for task ':app:clean'. Unable to delete file
- VS2015+Opencv310+Win10环境配置+简单调用摄像头
- Java类、类属性、静态块、实例、实例属性、实例块初始化顺序
- 分布式搜索Elasticsearch——QueryBuilders.idsQuery
- mysql5.6 中文乱码问题
- POJ 1789 Truck History(最小生成树)
- android 中添加一个服务
- 宜信大数据信息
- 分布式搜索Elasticsearch——MultiSearch
- Flask:程序的基本结构
- Value【NOIP2016提高A组模拟8.17】