java中构造一个类实例,就要首先构造它的父类,因为子类是由父类派生而来,只有有了父类才可能有子类.而对于类本身的构造过程中,是要首先按顺序来对它的成员变量进行初始化,然后再调用其构造方法.
所以 java中构造一个类的整个过程可以理解为:如果有父类 先 1构造父类 然后构造本类 2本类成员变量初始化 3调用本类构造方法

实际上在每个类(除Object外)的构造造方法中都要执行super()方法,默认的情况下系统会自动为构造方法最前面加上super()这条语句,我们可以显示的写出来,并且也可为其加上参数,前提是父类有相对应的构造方法.前面说的构造本类之前要构造父类就是这条语句的作用.
成员变量的初始化过程是在super()语句后面其它方法体前面执行的
如果某个类的父类有多个构造方法时 子类就可以用不同的参数调用父类中相对应的构造方法来构造父类
如果加上自由块 和静态的自由块 执行的顺序为:
父类的静态自由块,父类的静态成员变量被初始化

子类的静态自由块,子类的静态成员变量被初始化

父类的自由块,父类的成员变量被初始化

父类的构造方法

子类的自由块,子类的成员变量被初始化

子类的构造方法
自由块和成员变量是等同的优先级被初始化的

例:

public class E {
public static void main(String[] args) {
new B();
}

}

class A {
{
System.out.println("父类A的自由块");
}

A() {
System.out.println("父类A的构造方法\n");
}

D d = new D("父类A的成员变量被初始化\n");

static {
System.out.println("父类A的静态自由块");
}

static D dd = new D("父类A的静态成员变量被初始化\n");
}

class B extends A {

static D ddd = new D("子类B的静态成员变量被初始化");
static {
System.out.println("子类B的静态自由块\n");
}
D dddd = new D("子类B的成员变量被初始化");

B() {
super();
System.out.println("子类B的构造方法");
}

{
System.out.println("子类B的自由块\n");
}
}

class D {
D(String str) {
System.out.println(str);
}
}

输出为:

父类A的静态自由块

父类A的静态成员变量被初始化

子类B的静态成员变量被初始化

子类B的静态自由块

父类A的自由块

父类A的成员变量被初始化

父类A的构造方法

子类B的成员变量被初始化

子类B的自由块

转至:http://blog.sina.com.cn/s/blog_55d3e64f0100au1g.html

转载于:https://blog.51cto.com/houzx910/1312410

java中构造方法的执行过程相关推荐

  1. 动图 + 源码,演示 Java 中常用数据结构执行过程及原理

    最近在整理数据结构方面的知识, 系统化看了下Java中常用数据结构, 突发奇想用动画来绘制数据流转过程. 主要基于jdk8, 可能会有些特性与jdk7之前不相同, 例如LinkedList Linke ...

  2. 数据结构中缀表达式转后缀表达式与后缀表达式的求值实训报告_动图+源码,演示 Java 中常用数据结构执行过程及原理...

    程序员的成长之路互联网/程序员/成长/职场 关注 阅读本文大概需要 3.7 分钟. 作者:大道方圆cnblogs.com/xdecode/p/9321848.html 最近在整理数据结构方面的知识, ...

  3. 动图+源码,演示 Java 中常用数据结构执行过程及原理

    程序员的成长之路 互联网/程序员/成长/职场 关注 阅读本文大概需要 3.7 分钟. 作者:大道方圆 cnblogs.com/xdecode/p/9321848.html 最近在整理数据结构方面的知识 ...

  4. Java中构造方法的执行顺序

    2019独角兽企业重金招聘Python工程师标准>>> 一.先执行内部静态对象的构造方法,如果有多个按定义的先后顺序执行:静态对象在构造的时候也是也先执行其内部的静态对象. 二.再调 ...

  5. java中构造方法和方法全面解析

    java中构造方法和方法全面解析 我相信大多说人都对构造方法.方法不陌生,而且很了解,但我也相信有很多像我这样的没有一个很好很清晰很全面的认识,今天就把它整理如下,希望能给大家带来点方便与帮助,也希望 ...

  6. Java在编译到执行过程的编码问题

    一.两个字符编码的参数 javac和java是JDK自带的工具,其中javac是编译工具,java工具启动Java虚拟机并执行java程序.这两个工具都带有设置字符编码的选项.本文讨论字符编码选项的使 ...

  7. 请说明一下JAVA中反射的实现过程和作用分别是什么?

    请说明一下JAVA中反射的实现过程和作用分别是什么? Java语言编译后形成.class文件,反射就是通过字节码文件找到一个类,类中的方法及属性等.反射的实现主要通过四个类 Class 类的对象 Co ...

  8. java socket分包粘包 代码_分享java中处理socket通信过程中粘包情况的实例代码

    本篇文章主要介绍了java中处理socket通信过程中粘包的情况,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 这两天学习了java中处理socket通信过程中粘包的情况,而且很重要,所以,今天添 ...

  9. java中构造方法的概念和作用

    一.概念: java中构造方法指的是: 与类名相同,无返回类型的方法,参数可以为空,也可以带参数. 比如一个 Dao 类,private Dao(){}这个就是无参数的构造方法. private Da ...

  10. java中构造方法的特征及其作用

    Java中构造方法的定义和作用 构造方法的特征 • 它具有与类相同的名称: • 它不含返回值: • 它不能在方法中用 return 语句返回一个值: • 当自定义了构造方法后,编译器将不再自动创建不带 ...

最新文章

  1. 快速记忆python函数-【速学速记】Python 高阶函数
  2. windows7下取消PDF格式文件图标的缩略图预览
  3. 智能识别技术对电子警察设备的影响
  4. 属性面板 脚本_如何在组态王中实现同类型设备公用操作面板的调用---干货
  5. c#同时上传文件和参数,Java接收的完整教程,炒鸡简单!网上的教程弱爆了!
  6. [CareerCup] 18.4 Count Number of Two 统计数字2的个数
  7. 计算机中键盘可以共享吗,两个电脑怎么共用一个键盘
  8. 树莓派摄像头远程拍照及传输
  9. iphone和android照片传输,iPhone与安卓跨平台如何传照片图文教程
  10. C#导出数据—使用Word模板
  11. 如何实现必须关注公众号才能使用微信小程序,从而通过微信小程序免费为公众号吸粉。#微信营销#微信公众号吸粉#微信小程序吸粉
  12. 几种服务器监控系统,几种服务器监控系统
  13. Cloudflare CNAME 接入满血复活,一分钱不用花!
  14. 苹果手机7P ios14 nfc怎么复制门禁卡
  15. 央行超级网银8月上线;Win7市场份额突破10%(每日关注2010.4.2)
  16. 【Ubuntu】安装 ibus 中文拼音输入法
  17. 基于已知点云地图的NDT的激光SLAM定位
  18. Hulu全球研发副总裁诸葛越谈人工智能
  19. 文本(文章内容)编辑器(CMS管理)
  20. CSDN博客的积分规则

热门文章

  1. Service GIS
  2. 物流管理系统(SSM+vue+shiro)【前后台】
  3. prepareStatament和Statement和callableStatement的区别
  4. FastJSON、Gson、Jackson(简单了解使用)
  5. jmeter监控服务器CPU、网络、内存等信息
  6. select, poll, epoll的实现分析
  7. Python--多态与多态性、绑定方法与非绑定方法
  8. C语言 · 图形输出
  9. 2016年9月ccf
  10. hdu2108 判断是凸多边形还是凹多边形