java构造函数的执行顺序,java构造函数和初始化函数的执行顺序
1,静态变量、静态代码块、变量、普通代码块、mian方法、构造函数的执行顺序是:(静态变量、静态代码块)> main方法 >(变量、普通代码块)>构造函数。
2,如果子类调用了父类,那么执行顺序是:(父类静态变量、父类静态代码块)>(子类静态变量、子类静态代码块)> main方法 >(父类变量、父类代码块)> 父类构造方法 >(子类变量、子类代码块)> 子类构造方法
3,子类继承父类简单举例说明:也就是说此时的运行顺序为:
父类静态块
自身静态块
父类块
父类构造器
自身块
自身构造器
/**
* 测试父类和子类代码执行顺序
*/
public class Father1 {
/**
* 父类静态代码块
*/
static {
System.out.println("父类1静态代码块");
}
/**
* 父类块
*/
{
System.out.println("父1类块");
}
/**
* 父类构造方法
*/
public Father1(){
System.out.println("父1类构造方法");
}
}
子类代码:
/**
* 测试父类和子类代码执行顺序
*/
public class Child1 extends Father1{
/**
* 子类静态代码块
*/
static {
System.out.println("子1类静态代码块");
}
/**
* 子类代码块
*/
{
System.out.println("子1类块");
}
/**
* 子类构造方法
*/
public Child1() {
System.out.println("子1类构造方法");
}
public static void main(String args[]){
System.out.println("main1方法");
/**
* 实例化
*/
Child1 c = new Child1();
}
}
执行结果是:
父类1静态代码块
子1类静态代码块
main1方法
父1类块
父1类构造方法
子1类块
子1类构造方法
4,子类2集成父类2,并且在类中实例化父类1。通过下面的例子可以知道静态变量和静态代码块的执行顺序,是按照他们在类中的顺序来执行的。那么执行顺序会是:父类2的静态--子类2的静态--main方法--父类2的常量--父类2的构造--子类2的常量--父类1的静态--父类1的常量-父类1的构造--子类2的构造。也就是说此时的运行顺序为:
父类2静态块
自身静态块
父类2块
父类2构造器
自身块
父类1静态块
父类1块
父类1构造器
自身构造器
父类:
/**
* 测试父类和子类代码执行顺序
*/
public class Father2 {
public static String F_STATIC_FILED = "父2类静态变量";
public String F_FILED = "父2类普通变量";
/**
* 父类静态代码块
*/
static {
System.out.println(F_STATIC_FILED);
System.out.println("父2类静态代码块");
}
/**
* 父类块
*/
{
System.out.println(F_FILED);
System.out.println("父2类块");
}
/**
* 父类普通方法
*/
public void f_method(){
System.out.println("父2类普通方法");
}
/**
* 父类构造方法
*/
public Father2(){
System.out.println("父2类构造方法");
}
}
子类:
/**
* 测试父类和子类代码执行顺序
*/
public class Child2 extends Father2{
public static String C_STATIC_FILED = "子2类静态变量";
public String C_FILED = "子2类普通变量";
/**
* 子类静态代码块
*/
static {
System.out.println(C_STATIC_FILED+"cccc");
System.out.println("子2类静态代码块");
}
/**
* 子类代码块
*/
{
System.out.println("子2类块");
}
/**
* 子类构造方法
*/
public Child2() {
System.out.println("子2类构造方法");
}
public static void main(String args[]){
System.out.println("main2方法");
/**
* 实例化
*/
Child2 c = new Child2();
}
Father1 f2 = new Father1();
}
执行结果是:
父2类静态变量
父2类静态代码块
子2类静态变量
子2类静态代码块
main2方法
父2类普通变量
父2类块
父2类构造方法
子2类块
父类1静态代码块
父1类块
父1类构造方法
子2类构造方法
5:总结如下:
类初始化时构造函数调用顺序:
(1)初始化对象的存储空间为零或null值;
(2)调用父类构造函数;
(3)按顺序分别调用类成员变量和实例成员变量的初始化表达式;
(4)调用本身构造函数。
在我们的程序中,实例化一个类对象的时候,运行顺序为:
父类静态块
父类构造器
本类中的块
本类的构造器
java构造函数的执行顺序,java构造函数和初始化函数的执行顺序相关推荐
- java设计一个顺序表类的成员函数_顺序表代码讲解以及实现
用C语言编写一个有关顺序表的程序代码 创建一个顺序表,其数据元素类型为整型: 在该顺序表中插入数据(#include #include #define MaxSize 50 typedef char ...
- C++main函数的参数介绍以及如何在main函数前执行一段代码
C++中参数介绍:https://www.cnblogs.com/jisongxie/p/7892366.html C++中主函数的执行过程以及如何在main函数前执行一段代码:https://www ...
- java先执行static还是构造函数_【Java基础】类的实例化、static、父类构造函数执行顺序...
重温java基础,以免自己以后犯原则性错误,这是最基本,最基础的东西. 先看结论: 一个类的实例化过程: 1,首先会执行类中static代码块(不管代码块是否在类的开头还是末尾处),如果这个类有父类, ...
- java 父类的构造函数_java中为什么父类构造函数必须执行?
final 在java中,final可以用来修饰类,方法和变量(成员变量或局部变量).下面将对其详细介绍. 1.1 修饰类 当用final修饰类的时,表明该类不能被其他类所继承.当我们需要让一个类永远 ...
- java 静态块初始化_简单了解java中静态初始化块的执行顺序
这篇文章主要介绍了简单了解java中静态初始化块的执行顺序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在java中,其应该是先于所有的方法执行. ...
- java构造函数的特点_java中构造函数的特点是什么?图文解析
在现代社会信息化高速发展的今时今日,几乎每个人都在为了更好地生活而努力拼搏着.为了更高的薪资,很多人开始学习java编程语言.今天就来为大家介绍java中构造函数的特点是什么,并且通过图片为大家解析. ...
- getvalue函数怎么使用_Java中的构造函数——通过示例学习Java编程(14)
作者:CHAITANYA SINGH 来源:通过示例学习Java编程(14):Java中的构造函数-方家话题 构造函数是用来初始化新创建的对象的代码块.构造函数类似于java中的实例方法(Instan ...
- 什么是java构造函数_什么是java构造函数
构造函数是面向对象中的一员,构造函数可以叫做构造器,它的函数名与类名相同,不用定义返回值类型,也没有具体的返回值.构造函数是在构建创造时对象时调用函数,作用是可以给对象进行初始化,创建对象都必须要通过 ...
- java 线程的构造函数_深入理解Thread构造函数
本文参考汪文君著:Java高并发编程详解. 1.线程的命名 在构造现成的时候可以为线程起一个名字.但是我们如果不给线程起名字,那线程会有一个怎样的命名呢? 这里我们看一下Thread的源代码: pub ...
最新文章
- 请参阅:Chrome开发者工具中的悬停状态
- java怎么读取word某一页内容_Word页码设置的3点技巧,提高排版效率,减少不必要烦恼...
- UOJ #578. 收集卡片
- 作为一个死忠粉,我的 IntelliJ IDEA 一直都是这样来设置的,效果很棒!
- 教你如何塑造JavaScript牛逼形象
- usb连接不上 艾德克斯电源_工程师,USB与SPI之间如何通信?什么芯片方案可以实现...
- 仿照七牛云图片处理类实现的C#帮助类
- python拦截tcp数据包_发送低级原始tcp数据包python
- testbench学习笔记(转载)
- UnityWebGL发布包问题及IIS配置
- 我从冯·诺依曼计算机体系,追溯到了JVM,一切原来如此
- 侯捷-C++面向对象高级开发(操作符重载与临时对象)
- java画篮球_PS教程!手把手教你绘制炫酷的科比篮球海报
- 为什么微信连接不上服务器失败怎么回事啊,微信为什么一直提示连接失败请检查网络设置...
- Flutter网络请求方式总结
- 谷歌生物医学专用翻译_一个可以快速翻译浏览英文文献的工具,拿走不谢!
- AVS3变换系数编码:SRCC
- 云南计算机网络技术专业培训学院,云南哪些大学有计算机网络技术专业
- Whale News | 帷幄 CEO 叶生晅入围36氪「X·36Under36」榜单
- 一个简单的购物车加减按钮
热门文章
- houghlinesp找到多条直线_拿什么拯救焦虑的你,一个有勇气的人终将找到他的路...
- 以计算机为题写一篇英语作文,请以“未来的钢笔”为题写一篇不少于80词的英语作文...
- 机器学习sklearn
- JAVA中的按值传递
- 读书笔记----10日摘抄整理(11)
- iOS 关于TouchID指纹解锁的实现
- 调试中除了在URL上加时间戳外,如何避免js、css被返回304状态?
- 【转】PLI是什么以及怎么用
- 如何保证Session值不丢失
- 篮球战术谈之经典配合