类加载的顺序:

1.加载静态成员/代码块:

先递归地加载父类的静态成员/代码块(Object的最先);再依次加载到本类的静态成员。

同一个类里的静态成员/代码块,按写代码的顺序加载。

如果其间调用静态方法,则调用时会先运行静态方法,再继续加载。同一个类里调用静态方法时,可以不理会写代码的顺序。

调用父类的静态成员,可以像调用自己的一样;但调用其子类的静态成员,必须使用“子类名.成员名”来调用。

2.加载非静态成员/代码块:

先递归地加载父类的非静态成员/代码块(Object的最先);再依次加载到本类的非静态成员。

同一个类里的非静态成员/代码块,按写代码的顺序加载。同一个类里调用方法时,可以不理会写代码的顺序。

但调用属性时,必须注意加载顺序。一般编译不通过,如果能在加载前调用,值为默认初始值(如:null 或者 0)。

调用父类的非静态成员(private 除外),也可以像调用自己的一样。

3.调用构造方法:

先递归地调用父类的构造方法(Object的最先);默认调用父类空参的,也可在第一行写明调用父类某个带参的。

再依次到本类的构造方法;构造方法内,也可在第一行写明调用某个本类其它的构造方法。

注意:如果加载时遇到 override 的成员,可看作是所需创建的类型赋值给当前类型。

其调用按多态用法:只有非静态方法有多态;而静态方法、静态属性、非静态属性都没有多态。

假设子类override父类的所有成员,包括静态成员、非静态属性和非静态方法。

由于构造子类时会先构造父类;而构造父类时,其所用的静态成员和非静态属性是父类的,但非静态方法却是子类的;

由于构造父类时,子类并未加载;如果此时所调用的非静态方法里有成员,则这个成员是子类的,且非静态属性是默认初始值的。

java 类的执行顺序_java类加载的顺序相关推荐

  1. java类验证和装载顺序_Java类加载机制实现流程及原理详解

    前言 我们知道,Java项目编译后会生成许许多多的class文件,class文件保存着类的描述信息.虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验.转化解析和初始化,最终形成可以被虚 ...

  2. java类验证和装载顺序_java类加载机制,你会了吗?

    什么是类加载机制呢? java虚拟机将编译后的class文件加载到内存中,进行校验.转换.解析和初始化,到最终的使用.这就是java类加载机制: 下面就开始今天的内容: 1.类加载的生命周期:加载(L ...

  3. java 类的执行顺序_Java中类的执行顺序

    讲解在代码中: package 类执行顺序; /** * java类执行顺序 * * 1.如果父类有静态成员赋值或者静态初始化块,执行静态成员赋值和静态初始化块 * 2.如果类有静态成员赋值或者静态初 ...

  4. Java类的执行顺序

    在Java中一个类包括:构造块.构造方法.静态块.main方法.普通方法. 通过下面的例子将看出一个类中各种方法的执行顺序: 1 /** 2 * @author zhengbinMac 3 */ 4 ...

  5. java类验证和装载顺序_Java类的加载顺序

    1.有继承关系的加载顺序 关于关键字static,大家 都知道它是静态的,相当于一个全局变量,也就是这个属性或者方法是可以通过类来访问,当class文件被加载进内存,开始初始化的时候,被static修 ...

  6. java 类 重新加载_Java动态类加载和重新加载的详细介绍

    本篇文章给大家带来的内容是关于Java动态类加载和重新加载的详细介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. Java中可以在运行时加载和重新加载类,虽然并不像我们想像中那么简 ...

  7. java类验证和装载顺序_Java类的加载机制和双亲委派模型

    Java类的加载机制和双亲委派模型 1类的加载机制 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括了:加载(Loading).验证(Verification).准备(Prepar ...

  8. Java类Demo中存在_Java中的数据类型转换

    先来看一个题: Java类Demo中存在方法func0.func1.func2.func3和func4,请问该方法中,哪些是不合法的定义?( ) public class Demo{ float fu ...

  9. java类与对象实验_JAVA类与对象实验报告

    <JAVA类与对象实验报告>由会员分享,可在线阅读,更多相关<JAVA类与对象实验报告(6页珍藏版)>请在人人文库网上搜索. 1.面向对象程序设计实验报告实验三.类与对象(1) ...

最新文章

  1. vue.js crud_如何使用VS Code和ADO.NET使用ASP.NET Core执行CRUD操作
  2. mysql 事务 返回插入的值_Mysql同一个事务内记录成功插入后查询不出来
  3. ant基本标签 及import properties
  4. NAVICAT MYSQL 建表字段 默认值、EMPTY STRING、空白、NULL 的区别
  5. 额外sql使用什么封装_为什么建立社区值得付出额外的努力
  6. 设计模式(二)--里氏替换原则(Java的继承规范)
  7. 【torch】pytorch label的one-hot转化
  8. c语言按键中断程序,单片机C语言代码:外部中断,按下中断按键LED不亮,LED1正常亮...
  9. [连载]《C#通讯(串口和网络)框架的设计与实现》-1.通讯框架介绍
  10. python如何批量导出数据_【Python】批量导出数据并处理——第一弹
  11. iic协议 c语言,IIC协议-C语言
  12. 设计模式:Builder模式
  13. 软件录制电脑扬声器音频的原理
  14. 黑苹果0004——制作u盘并开始安装
  15. 尚硅谷nodejs入门教程_笔记
  16. Java—二维码生成与识别(一)
  17. 口令登陆创新的一些想法
  18. Tomcat单机多实例配置
  19. 【多线程与高并发】JMM内存模型 基础
  20. 矩阵特征值和椭圆长短轴的关系?

热门文章

  1. ADAS系统长篇综述(下)
  2. 2021年大数据Flink(三十六):​​​​​​​Table与SQL ​​​​​​案例三
  3. LookupError: unknown encoding: uft-8
  4. Scala函数式编程(三) scala集合和函数
  5. 儿子和女儿——解释器和编译器的区别与联系
  6. Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现
  7. 把对像生成json并存储到文件
  8. Ubuntu 18 snap 占用 100%,卸载 snap
  9. 如何找到自己的优势并坚定信念执行下去
  10. 【总结】sqli-labs Less(1-35) 小结