一、背景:

存在类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类初始化和实例初始化相关推荐

  1. java斗地主代码_实例解析java如何实现斗地主代码

    实例解析java如何实现斗地主代码 发布时间:2020-07-20 14:41:41 来源:亿速云 阅读:73 作者:小猪 小编这次要给大家分享的是实例解析java如何实现斗地主代码,文章内容丰富,感 ...

  2. python中属性和类级变量_六、Python类变量和实例变量(类属性和实例属性)

    我们知道,无论是在类中定义的属性还是方法,在类的外部,都无法直接调用它们,因此,我们完全可以把类看做是一个独立的作用域(称为类命名空间),则类属性其实就是定义在类命名空间内的变量(类方法其实就是定义的 ...

  3. python类属性和实例属性_Python 类属性与实例属性,类对象与实例对象用法分析...

    本文实例讲述了Python 类属性与实例属性,类对象与实例对象用法.分享给大家供大家参考,具体如下: demo.py(类属性,所有实例对象共用类属性): # 定义工具类 继承object是为了兼容py ...

  4. java 虚拟机类型的卸载_《深入理解Java虚拟机》:类加载和初始化(二)

    <深入理解Java虚拟机>:类加载和初始化(二) 在去年看<深入理解Java虚拟机>的时候,写过一篇关于类加载和初始化的博客,最近又在看这一块的知识,发现还是有很多东西没有理解 ...

  5. java 虚拟机 初始化_【深入理解Java虚拟机】类的初始化过程

    类的初始化过程 类的加载过程.png 加载 将 Class 文件以二进制的形式加载到内存中 验证 校验 Class 文件是否安全,是否被正确的修改等 准备 为类变量申请内存,设置默认值,(初始化变量的 ...

  6. java 如何操作字节数组_实例解析Java字节数组操作模式代码

    字节数组的关键是它为存储在这部分内存中的每个8位值提供索引(快速)和精确的原始访问,并且您可以操纵这些字节来控制每个位.缺点是计算机只将每个条目视为一个独立的8位数字--这可能是您的程序正在处理的,或 ...

  7. java国际化 英语的标识符_(转)Java 国际化

    1. Java国际化简介 Java既然作为一个跨平台的语言就必然要在各种不同的语言环境中使用, 为了解决这个问题Java给我们提供了一个工具类ResourceBundle, 帮助我们实现Java的国际 ...

  8. java 汉字是多少字节_面试官:Java 中有几种基本数据类型是什么?各自占用多少字节?...

    认识基本数据类型 在学习基本数据类型之前,我们先认识一下这两个单词: 1.bit --位:位是计算机中存储数据的最小单位,指二进制数中的一个位数,其值为"0"或"1&qu ...

  9. java查看对象锁级别_对象级别锁 vs 类级别锁(Java)

    前言 对于多线程(并发)和Spring Boot这两块在同步进行学习中,在看到使用synchronized关键字使操作同步时,看到和C#中不一样的东西,所以这里呢,就深入学习了下,若有错误之处,还望指 ...

  10. java 工作3年水平_有着4年java工作经验,应该达到什么样的水平?

    四年Java工作经验已经不短了,应该要有比较高的技术水准. 1.集合 几乎是面试必问的内容,问的基本是底层实现原理,实现类的优缺点. 2.设计模式 23种设计模式中重点研究常用的十来种就可以了,面试中 ...

最新文章

  1. 安装Fedora 15后需做的25件事情(转51cto)
  2. 自动滚动_滚动式封口机的性能特点有哪些?
  3. 后台服务系统之Dubbo Admin的讲解
  4. jdk1.8 mysql_Centos 7配置JDK1.8+MySQL5.7+Tomcat 8 开发环境
  5. 驳《IT开发工程师的悲哀》
  6. 原来“抖商大会”和抖音没有关系!抖音起诉“抖商大会”主办方 索赔300万
  7. Node中POST请求的正确处理方式
  8. css 清空ios端_H5移动端开发常见的问题处理
  9. docker~学习笔记索引
  10. 苹果台式机怎么设置我的电脑计算机,怎么让台式电脑用苹果手机的wifi上网
  11. 转行软件测试两个多月,感觉很迷茫,下一步该如何提高自己?
  12. WCDMA物理层--信道整体结构流程
  13. Ubuntu安装Clang\Clang版本切换
  14. 重装战姬服务器正在维护,《重装战姬》4月23日更新维护公告
  15. 单细胞分析:聚类流程(六)
  16. nyoj 1275-导弹发射 //lis
  17. iPad闪屏跳动怎么回事?怎么解决?
  18. 算法训练营 图的应用(最小生成树)
  19. 视觉-惯性SLAM入门与实践教程(基于VINS-Fusion)
  20. 正常性入职岗前培训(非培训机构的实习生入职培训)---基础知识总结

热门文章

  1. Mysql Type中的all和index区别?
  2. 从 ES 到 Kylin,斗鱼客户端性能分析平台进化之旅
  3. leetcode 611. Valid Triangle Number | 611. 有效三角形的个数(Java)
  4. 数据结构:链式基数排序,通俗易懂!
  5. leetcode 225. 用队列实现栈(维护两个队列用于倒替元素,使用和1进行按位与,实现队列切换)
  6. 【jQuery】使用jquery.form.js,获取提交表单返回值
  7. 【SpringBoot】浏览器报错Resource interpreted as Stylesheet but transferred with MIME type text/html
  8. mysql修改字段名称_MySQL增删改查的常用语句汇总
  9. ChubaoFS:一个面向大规模容器平台的分布式文件系统
  10. 【一起去大厂系列】针对left join以及limit的两条优化小技巧