【知识总结】Java类初始化顺序说明
微信公众号:努力编程的小猪
如有问题或建议,请公众号留言
Java类初始化顺序说明
一个类中包含如下几类东西,他们前后是有顺序关系的
- 静态属性:static 开头定义的属性
- 静态方法块: static {} 圈起来的方法块
- 普通属性: 未带static定义的属性
- 普通方法块: {} 圈起来的方法块
- 构造函数: 类名相同的方法
- 方法: 普通方法
初始化顺序
public class LifeCycle {
// 静态属性
private static String staticField = getStaticField();
// 静态方法块
static {
System.out.println(staticField);
System.out.println("静态方法块初始化");
System.out.println("Static Patch Initial");
}
// 普通属性
private String field = getField();
// 普通方法块
{
System.out.println(field);
System.out.println("普通方法块初始化");
System.out.println("Field Patch Initial");
}
// 构造函数
public LifeCycle() {
System.out.println("构造函数初始化");
System.out.println("Structure Initial ");
}
public static String getStaticField() {
String statiFiled = "Static Field Initial";
System.out.println("静态属性初始化");
return statiFiled;
}
public static String getField() {
String filed = "Field Initial";
System.out.println("普通属性初始化");
return filed;
}
// 主函数
public static void main(String[] argc) {
new LifeCycle();
}
}
执行结果:
静态属性初始化
Static Field Initial
静态方法块初始化
Static Patch Initial
普通属性初始化
Field Initial
普通方法块初始化
Field Patch Initial
构造函数初始化
Structure Initial
总结:包含父子类和接口类
普通类:
- 静态变量
- 静态代码块
- 普通变量
- 普通代码块
- 构造函数
继承的子类:
- 父类静态变量
- 父类静态代码块
- 子类静态变量
- 子类静态代码块
- 父类普通变量
- 父类普通代码块
- 父类构造函数
- 子类普通变量
- 子类普通代码块
- 子类构造函数
抽象的实现子类: 接口 - 抽线类 - 实现类
- 接口静态变量
- 抽象类静态变量
- 抽象类静态代码块
- 实现类静态变量
- 实习类静态代码块
- 抽象类普通变量
- 抽象类普通代码块
- 抽象类构造函数
- 实现类普通变量
- 实现类普通代码块
- 实现类构造函数
接口注意:
- 声明的变量都是静态变量并且是final的,所以子类无法修改,并且是固定值不会因为实例而变化
- 接口中能有静态方法,不能有普通方法,普通方法需要用defalut添加默认实现
- 接口中的变量必须实例化
- 接口中没有静态代码块、普通变量、普通代码块、构造函数
【知识总结】Java类初始化顺序说明的更多相关文章
- Java提高篇——静态代码块、构造代码块、构造函数以及Java类初始化顺序
静态代码块:用staitc声明,jvm加载类时执行,仅执行一次构造代码块:类中直接用{}定义,每一次创建对象时执行.执行顺序优先级:静态块,main(),构造块,构造方法. 构造函数 public H ...
- Android(java)学习笔记136:Java类初始化顺序
Java类中初试化的顺序: 由此得出Java普通类初始化顺序结论: 静态变量 静态初始化块 变量 初始化块 构造器 由此得出Java继承类初始化顺序结论: 1 .继承体系的所有静态成员初始化( ...
- Android(java)学习笔记78:Java类初始化顺序
1. Java类中初试化的顺序: 由此得出Java普通类初始化顺序结论: (1)静态变量 (2)静态初始化块 (3)变量 (4)初始化块 (5)构造器 由此得出Java继承类初始化顺序结论: (1)继 ...
- java类初始化顺序
一.概述 了解类的初始化顺序,可以更灵活.方便的构造一个类. 二.类初始化顺序 2.1 示例 public class InitialOrderTest { public static void ma ...
- 转!!关于java类初始化顺序
原文地址:http://www.cnblogs.com/luckygxf/p/4796955.html 1.没有继承 静态变量->静态初始化块->变量->变量初始化块->构造方 ...
- Java类初始化顺序,大神3个示例带你躺坑。。
最近发现微信群里面有些群友在讨论类的初始化顺序,如类的静态变量.成员变量.静态代码块.非静态代码块.构造器,及继承父类时,它们的初始化顺序都是怎样的,下面我通过例子来说明这个情况,以免被人误导. 示例 ...
- Java类初始化顺序问题
main -> (静态变量.静态代码块) ->main函数体 -> (类变量.初始化块.实例化引用的类) -> 构造函数 初始化块与实例化引用的类 的调用顺序 按程序的编写上下 ...
- Java 类初始化顺序
总的来说: 父类静态代码块->子类静态代码块->子类main()方法->父类构造块->父类构造方法->子类构造块->子类构造方法 注意,就算是静态的方法也需要调用才 ...
- Java类初始化
Java类初始化 成员变量的初始化和构造器 如果类的成员变量在定义时没有进行显示的初始化赋值,Java会给每个成员变量一个默认值 对于 char.short.byte.int.long.float. ...
随机推荐
- 浅谈Nutch插件机制(含开发实例)
plugin(插件)为nutch提供了一些功能强大的部件,举个例子,HtmlParser就是使用比较普遍的用来分析nutch抓取的html文件的插件. 为什么nutch要使用这样的plugin系统? ...
- Android 使用ListView显示信息列表
课程目标1.理解ListView的基础使用2.学会熟练运用两种适配器(ArrayAdapter.SimpleAdapter)3.学会熟练运用两种监听器(OnScrollListener.OnItemC ...
- springAOP实现(含实例)
需要用到的jar包: 1.XML方式实现: package cn.lxc.post; public class Intermediary { public void post(){ System.ou ...
- Cognos入门教程
Cognos入门教程 1. ReportStudio入门教程 ReportStudio入门教程(http://blog.csdn.net/column/details/ygy-reportstudio ...
- LeetCode - Employees Earning More Than Their Managers
Description: The Employee table holds all employees including their managers. Every employee has an ...
- Excel 2010 统计行数
1. 首先选择一个空行 2.然后点击如下:公式 --- 3. 第一行:填写“103”,当然我也不能明白为啥填写103.照做就是了. 4.鼠标定位到 第二行 “Ref1”位置,然后 鼠标+shfit 按 ...
- Map集合中value()方法与keySet()、entrySet()区别 《转》
在Map集合中 values():方法是获取集合中的所有的值----没有键,没有对应关系, KeySet(): 将Map中所有的键存入到set集合中.因为set具备迭代器.所有可以迭代方式取出所有的键 ...
- js的字符串charAt()方法
//字符中的字符从左向右进行索引,由0开始,字符串中的空格也算在内 var string = "charAt find word position"; document.write ...
- Egret类class和module写法区别
普通类 Test.ts class Test { public name:string = "Test"; public run(){ console.log(this.name) ...
- 【office2010】office2010安装问题的解决方案。
今天想在公司电脑上按上一个office2010,结果出现一个问题,导致研究了一下午才解决:现总结解决方案: 安装office 2010,提示需要安装MSXML版本6.10.1129.0组件.但是在网上 ...