Java构造时成员初始化的陷阱
今天看到一篇标题:“Java构造时成员初始化的陷阱”的文章:http://coolshell.cn/articles/1106.html
自已写了一个简单的程序测试了一下:
public final class Test
{public Test(){B b = new B(); System.out.println(b.name);} class A{A(){System.out.println("A()");a(); }void a(){System.out.println("A.a()");}}class B extends A{public String name= "张三";B(){ System.out.println("B()");}void a(){System.out.println("B.a()");name = "李四";}} public static void main(String[] args){ new Test(); }
}
运行输出的结果:
下面是对上面各个步骤的逐条解释:
进入构造函数。
为成员变量分配内存。
除非你显式地调用super(),否则Java 会在子类的构造函数最前面偷偷地插入super() 。
调用父类构造函数。
调用B.a(),因为被子类override,所以调用的是子类的。
于是,初始化发生在了a()之后。这是因为,Java需要保证父类的初始化早于子类的成员初始化,否则,在子类中使用父类的成员变量就会出现问题。
正式执行子类的构造函数(当然这是一个空函数,虽然我们没有声明)。
我当时看了也很意外,没想到会是这样的执行顺序和结果。
2013-05-11
转载于:https://www.cnblogs.com/personnel/p/4584891.html
Java构造时成员初始化的陷阱相关推荐
- Adobe flash cs5 的Java运行时环境初始化错误 完美解决方法
Adobe flash cs5 的Java运行时环境初始化错误 完美解决方法 下载网络上的Adobe flash cs5 精简版(绿色版),Java运行时环境初始化时出现错误,你可能需要重装Flash ...
- flash cs3 pro 写了脚本说java运行环境出错,Flash CS3动作面板打开出错[Java运行时环境初始化时出现错误,你可能需要重......
为了携带和使用方便,大多数人会选择使用软件的精简版,首先要感谢那些制作精简版软件的作者,因为这类软件一般不用安装,直接就能使用,而且体积一般只有 100MB左右.不过,正因为精简版精简了很多被认为是& ...
- Java运行时环境初始化出现错误
背景 当使用Flash中的动作面板或测试影片时,弹出错误窗口"Java运行时环境初始化时出现错误,你可能需要重装Flash".由于精简版不存在安装问题,因此这类错误一般都是精简过度 ...
- 解决:flash cs5运行时出现“java运行时环境初始化时出现错误,你可能需要重装Flash”
我安装时遇到这个问题,并已成功解决. 解决办法: 确定C:/Documents and Settings/All Users/Application Data/Adobe/CS5/jre下有相关jav ...
- Java运行时环境初始化时出现错误,你可能需要重新安装Flash(CS5)
又是一次网上大搜索.自己总结一下: 下载的版本是Adobe_Flash_CS5 (只有200多MB) 解压后.执行@快速安装.exe,再运行Flash.exe 就出现这个错了. 原因是这个精简版没有带 ...
- [转]Java运行时环境初始化时出现错误,你可能需要重新安装Flash(CS5)
From:http://blog.csdn.net/forscan/archive/2010/07/05/5713178.aspx 又是一次网上大搜索.自己总结一下: 下载的版本是Adobe_Flas ...
- JAVA 构造 MAP 并初始化 MAP、定义时就初始化
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 第一种方法:static块初始化 public class Demo{private static ...
- java构造方法时对象初始化,实例化,参数赋值
文章目录 绪论: 绪论: 构造方法时进行对象初始化,以及对象实例化,参数传值是我们这片文章主要要 介绍的东西. 接下来我们就开始讲解一下具体过程: 1.首先我们建一个学生类Student.我们规定这个 ...
- JAVA构造MAP并初始化MAP
第一种方法:static块初始化 public class Demo{ private static final Map<String, String> myMap; static { m ...
最新文章
- python100行代码-怎样写贪吃蛇小游戏?用100行python代码轻松解决!
- 这份优化清单,你做了哪些?
- MPLS服务采购面临哪些挑战?
- gridview的sort_GridView排序:SortDirection始终升序
- 工业界和学术界的思考
- RabbitMQ指南之四:路由(Routing)和直连交换机(Direct Exchange)
- Web 前端自学很苦?来,手把手教你,拿下前端!
- APP测试之Monkey压力测试(一)
- VC2008下安装OpenCV2.3.1
- 程序员复试都准备什么_考研复试一般能过吗 主要都考什么
- 一文读懂authorized_keys和known_hosts
- JVM学习笔记(13) 垃圾回收-相关概念
- vue 萤石_Vue接入萤石实时视频
- Android 之6.0 双向通话自动录音
- 用mysql查找姓王的行为轨迹_mysql查询
- 详细解析集成运算放大电路比例运算的工作原理
- linux下同时装ananocda2和anaconda3通过修改.bashrc文件进行切换
- 阿里云OSS配合PicGo搭建图床
- [git可视化软件]gitkraken6.5.1 免费版不能正常使用的解决办法
- 三菱fx2n做从站的modbus通讯_三菱PLC控制如何变频器?正解多种方法
热门文章
- 《分析服务从入门到精通读书笔记》第四章、创建父子维度(7)
- 哈工大鹏程lab武大提出对比学习+超分模型,实现了新的SOTA
- OpenVINO 部署 Mask-RCNN 实例分割
- “3D几何与视觉技术”全球在线研讨会(9月2日到12月16日)
- 3000类别,20万个标注,山师等推出大规模Logo检测数据集:LogoDet-3K
- DivideMix: Salesforce提出使用半监督学习大幅改进含噪声标签的学习
- 【python教程入门学习】通过运行python脚本来更改Windows背景
- 他回国后对学生说,玩会这12个游戏就能掌握python基础,其实不难
- 3D游戏建模就是那么简单
- 笔记 | 《机器学习》中计算学习理论(下)