知识大全 Java类的完整构造执行顺序
Posted 知
篇首语:不操千曲而后晓声,观千剑而后识器。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java类的完整构造执行顺序相关的知识,希望对你有一定的参考价值。
Java类的完整构造执行顺序 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
这里只说一个完整的结果 至于为什么是这样的顺序 可以参考我以前的文章 深入剖析java类的构造方式
- 如果父类有静态成员赋值或者静态初始化块 执行静态成员赋值和静态初始化块 如果类有静态成员赋值或者静态初始化块 执行静态成员赋值和静态初始化块 将类的成员赋予初值(原始类型的成员的值为规定值 例如int型为 float型为 f boolean型为false 对象类型的初始值为null) 如果构造方法中存在this()调用(可以是其它带参数的this()调用)则执行之 执行完毕后进入第 步继续执行 如果没有this调用则进行下一步 (这个有可能存在递归调用其它的构造方法) 执行显式的super()调用(可以是其它带参数的super()调用)或者隐式的super()调用(缺省构造方法) 此步骤又进入一个父类的构造过程并一直上推至Object对象的构造 执行类申明中的成员赋值和初始化块 执行构造方法中的其它语句
其中第 步是比较麻烦的 因为this调用实际上会调用类的另外一个构造方法 最终应该是执行类的某个构造方法 它可能会显示的调用super 但是无论是否调用super 最终都是执行super的 也就是父类的构造方法并一直这样递归到Object 所以在子类和父类的构造中 首先构造或者说执行的是父类的构造 但是它是由子类的构造方法调用的 先于构造方法的方法体里面的内容 这个是由编译器决定的 所以我感觉简单直观一些的顺序表述应该是
- 如果父类有静态成员赋值或者静态初始化块 执行静态成员赋值和静态初始化块 如果类有静态成员赋值或者静态初始化块 执行静态成员赋值和静态初始化块 将类的成员赋予初值(原始类型的成员的值为规定值 例如int型为 float型为 f boolean型为false 对象类型的初始值为null) 执行构造方法 并可能递归调用this() 最终先执行父类的构造方法并一直递归到Object的构造方法的执行 父类的构造方法执行完成后 执行类申明中的成员赋值和初始化块 执行构造方法中的其它语句
最终的简化顺序版本是
- 父类的静态成员赋值和静态块 子类的静态成员和静态块 父类的构造方法 父类的成员赋值和初始化块 父类的构造方法中的其它语句 子类的成员赋值和初始化块 子类的构造方法中的其它语句
相关参考
浅谈JAVA中类的构造器 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 现在越来越多的人开始学习
Java多线程顺序执行 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nb
一详细版 初始化 当页面被提交请求第一个方法永远是构造函数您可以在构造函数里面初始一些自定义属性或对象不过这时候因为页面还没有被完全初始化所以多少会有些限制特别地您需要使用Http
类有一个特殊的成员函数叫做构造成员函数它通常用于初始化类的数据成员在创建对象时会自动调用类的构造成员函数Java中的构造成员函数必须与该类具有相同的名字另外构造成员函数一般都应用public类
/*进程是一个正在执行的程序 *每一个进程执行都有一个执行顺序该顺序是一个执行路径或者叫一个控制单元 * *线程就是进程中的一个独立的控制单元 * 线程在
Java程序的基本单位是类类的定义可以看作是建立对象的原形你建立类之后就可用它来建立许多你需要的对象Java把每一个可执行的成分都变成类使面向对象发展到极点 类的基本定义成员函数如下
java想学后台该学些什么学习顺序怎么样???,学JAVA后台要学哪些?学习顺序要怎样才好?按顺序学这些:流程控制语句、类和物件、介面和抽象类、多型、封装、继承、阵列、集合、IO程式设计、执行绪,再学
在这个网址下载一个调用ssh和scp命令的jar包 然后就可以写程序了将上面的jar包导入MyEclipse下面是一个类的实例代码 packagehh; importjavaioBuffer
Java封闭之构造函数 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nb
Java容器类的线程安全 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Java容器类的关系图