java的3个初始化_通过实例解析Java类初始化和实例初始化
一、背景:
存在类Father和类Son,其中类Son继承了Father类。
1.父类Father代码
2.子类Son代码
*初始化包括?
成员变量赋初值、代码块、构造器
注意方法是被调用的,有人调用它它才执行相应的东西。
二、类初始化
在一开始,注释掉main方法中的代码,执行结果如下。
类初始化:
1.创建实例需要先加载并初始化该类
此处main方法所在的类需要先加载并初始化
2.子类初始化要先初始化其父类
3.类初始化即是执行clinit(ClassInit)方法
A.(静态!)分为 静态变量的显式赋值操作 和 静态代码块
B.上到下的顺序执行
C.这个clinit方法只执行一次
将父类中的static代码块放到静态变量之前,可以看到结果按顺序改变。
三、实例初始化
取消Son类中main方法的第一句注释,如下图所示。
此时将会先进行类初始化,再进行实例初始化,结果如下。
实例初始化:
1.实例初始化即是执行init方法
2.有几个构造器就有几个init方法,每次创建对象都会执行相应的init方法。
3.init方法由非静态实例变量显式赋值、非静态代码块和相应的构造器组成。
4.非静态实例变量赋值与非静态代码块按上到下的顺序执行,构造器在最后执行。
5.init方法的首行是super()或者带参数的super(),即父类init方法。
父类中的test()方法输出的是(4),为何父类中结果为932?
非静态方法前有一个默认的对象this
this在构造器(或者init方法)表示的是正在创建的对象。
这里是在创建Son类的对象,所以执行的是重写后的代码。
四、总结
初始化操作包括成员变量、静态/非静态代码块和构造器。
1.先类初始化,再实例初始化。
2.都是先父类再子类。
3.类初始化关键词"静态"。
4.实例初始化关键词"非静态",构造器在最后。
5.注意构造器和实例初始化init方法中的this对象。
五、补充
哪些方法不能被重写?
final方法
静态方法
private等子类中不可见方法
多态性的体现?
子类若重写了父类的方法,则通过子类对象调用的一定是子类重写过的方法
非静态方法默认的调用对象是this
this对象在构造器或者init方法中就是正在创建的对象
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
java的3个初始化_通过实例解析Java类初始化和实例初始化相关推荐
- java斗地主代码_实例解析java如何实现斗地主代码
实例解析java如何实现斗地主代码 发布时间:2020-07-20 14:41:41 来源:亿速云 阅读:73 作者:小猪 小编这次要给大家分享的是实例解析java如何实现斗地主代码,文章内容丰富,感 ...
- python中属性和类级变量_六、Python类变量和实例变量(类属性和实例属性)
我们知道,无论是在类中定义的属性还是方法,在类的外部,都无法直接调用它们,因此,我们完全可以把类看做是一个独立的作用域(称为类命名空间),则类属性其实就是定义在类命名空间内的变量(类方法其实就是定义的 ...
- python类属性和实例属性_Python 类属性与实例属性,类对象与实例对象用法分析...
本文实例讲述了Python 类属性与实例属性,类对象与实例对象用法.分享给大家供大家参考,具体如下: demo.py(类属性,所有实例对象共用类属性): # 定义工具类 继承object是为了兼容py ...
- java 虚拟机类型的卸载_《深入理解Java虚拟机》:类加载和初始化(二)
<深入理解Java虚拟机>:类加载和初始化(二) 在去年看<深入理解Java虚拟机>的时候,写过一篇关于类加载和初始化的博客,最近又在看这一块的知识,发现还是有很多东西没有理解 ...
- java 虚拟机 初始化_【深入理解Java虚拟机】类的初始化过程
类的初始化过程 类的加载过程.png 加载 将 Class 文件以二进制的形式加载到内存中 验证 校验 Class 文件是否安全,是否被正确的修改等 准备 为类变量申请内存,设置默认值,(初始化变量的 ...
- java 如何操作字节数组_实例解析Java字节数组操作模式代码
字节数组的关键是它为存储在这部分内存中的每个8位值提供索引(快速)和精确的原始访问,并且您可以操纵这些字节来控制每个位.缺点是计算机只将每个条目视为一个独立的8位数字--这可能是您的程序正在处理的,或 ...
- java国际化 英语的标识符_(转)Java 国际化
1. Java国际化简介 Java既然作为一个跨平台的语言就必然要在各种不同的语言环境中使用, 为了解决这个问题Java给我们提供了一个工具类ResourceBundle, 帮助我们实现Java的国际 ...
- java 汉字是多少字节_面试官:Java 中有几种基本数据类型是什么?各自占用多少字节?...
认识基本数据类型 在学习基本数据类型之前,我们先认识一下这两个单词: 1.bit --位:位是计算机中存储数据的最小单位,指二进制数中的一个位数,其值为"0"或"1&qu ...
- java查看对象锁级别_对象级别锁 vs 类级别锁(Java)
前言 对于多线程(并发)和Spring Boot这两块在同步进行学习中,在看到使用synchronized关键字使操作同步时,看到和C#中不一样的东西,所以这里呢,就深入学习了下,若有错误之处,还望指 ...
- java 工作3年水平_有着4年java工作经验,应该达到什么样的水平?
四年Java工作经验已经不短了,应该要有比较高的技术水准. 1.集合 几乎是面试必问的内容,问的基本是底层实现原理,实现类的优缺点. 2.设计模式 23种设计模式中重点研究常用的十来种就可以了,面试中 ...
最新文章
- 安装Fedora 15后需做的25件事情(转51cto)
- 自动滚动_滚动式封口机的性能特点有哪些?
- 后台服务系统之Dubbo Admin的讲解
- jdk1.8 mysql_Centos 7配置JDK1.8+MySQL5.7+Tomcat 8 开发环境
- 驳《IT开发工程师的悲哀》
- 原来“抖商大会”和抖音没有关系!抖音起诉“抖商大会”主办方 索赔300万
- Node中POST请求的正确处理方式
- css 清空ios端_H5移动端开发常见的问题处理
- docker~学习笔记索引
- 苹果台式机怎么设置我的电脑计算机,怎么让台式电脑用苹果手机的wifi上网
- 转行软件测试两个多月,感觉很迷茫,下一步该如何提高自己?
- WCDMA物理层--信道整体结构流程
- Ubuntu安装Clang\Clang版本切换
- 重装战姬服务器正在维护,《重装战姬》4月23日更新维护公告
- 单细胞分析:聚类流程(六)
- nyoj 1275-导弹发射 //lis
- iPad闪屏跳动怎么回事?怎么解决?
- 算法训练营 图的应用(最小生成树)
- 视觉-惯性SLAM入门与实践教程(基于VINS-Fusion)
- 正常性入职岗前培训(非培训机构的实习生入职培训)---基础知识总结
热门文章
- Mysql Type中的all和index区别?
- 从 ES 到 Kylin,斗鱼客户端性能分析平台进化之旅
- leetcode 611. Valid Triangle Number | 611. 有效三角形的个数(Java)
- 数据结构:链式基数排序,通俗易懂!
- leetcode 225. 用队列实现栈(维护两个队列用于倒替元素,使用和1进行按位与,实现队列切换)
- 【jQuery】使用jquery.form.js,获取提交表单返回值
- 【SpringBoot】浏览器报错Resource interpreted as Stylesheet but transferred with MIME type text/html
- mysql修改字段名称_MySQL增删改查的常用语句汇总
- ChubaoFS:一个面向大规模容器平台的分布式文件系统
- 【一起去大厂系列】针对left join以及limit的两条优化小技巧