java 类的执行顺序_java类加载的顺序
类加载的顺序:
1.加载静态成员/代码块:
先递归地加载父类的静态成员/代码块(Object的最先);再依次加载到本类的静态成员。
同一个类里的静态成员/代码块,按写代码的顺序加载。
如果其间调用静态方法,则调用时会先运行静态方法,再继续加载。同一个类里调用静态方法时,可以不理会写代码的顺序。
调用父类的静态成员,可以像调用自己的一样;但调用其子类的静态成员,必须使用“子类名.成员名”来调用。
2.加载非静态成员/代码块:
先递归地加载父类的非静态成员/代码块(Object的最先);再依次加载到本类的非静态成员。
同一个类里的非静态成员/代码块,按写代码的顺序加载。同一个类里调用方法时,可以不理会写代码的顺序。
但调用属性时,必须注意加载顺序。一般编译不通过,如果能在加载前调用,值为默认初始值(如:null 或者 0)。
调用父类的非静态成员(private 除外),也可以像调用自己的一样。
3.调用构造方法:
先递归地调用父类的构造方法(Object的最先);默认调用父类空参的,也可在第一行写明调用父类某个带参的。
再依次到本类的构造方法;构造方法内,也可在第一行写明调用某个本类其它的构造方法。
注意:如果加载时遇到 override 的成员,可看作是所需创建的类型赋值给当前类型。
其调用按多态用法:只有非静态方法有多态;而静态方法、静态属性、非静态属性都没有多态。
假设子类override父类的所有成员,包括静态成员、非静态属性和非静态方法。
由于构造子类时会先构造父类;而构造父类时,其所用的静态成员和非静态属性是父类的,但非静态方法却是子类的;
由于构造父类时,子类并未加载;如果此时所调用的非静态方法里有成员,则这个成员是子类的,且非静态属性是默认初始值的。
java 类的执行顺序_java类加载的顺序相关推荐
- java类验证和装载顺序_Java类加载机制实现流程及原理详解
前言 我们知道,Java项目编译后会生成许许多多的class文件,class文件保存着类的描述信息.虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验.转化解析和初始化,最终形成可以被虚 ...
- java类验证和装载顺序_java类加载机制,你会了吗?
什么是类加载机制呢? java虚拟机将编译后的class文件加载到内存中,进行校验.转换.解析和初始化,到最终的使用.这就是java类加载机制: 下面就开始今天的内容: 1.类加载的生命周期:加载(L ...
- java 类的执行顺序_Java中类的执行顺序
讲解在代码中: package 类执行顺序; /** * java类执行顺序 * * 1.如果父类有静态成员赋值或者静态初始化块,执行静态成员赋值和静态初始化块 * 2.如果类有静态成员赋值或者静态初 ...
- Java类的执行顺序
在Java中一个类包括:构造块.构造方法.静态块.main方法.普通方法. 通过下面的例子将看出一个类中各种方法的执行顺序: 1 /** 2 * @author zhengbinMac 3 */ 4 ...
- java类验证和装载顺序_Java类的加载顺序
1.有继承关系的加载顺序 关于关键字static,大家 都知道它是静态的,相当于一个全局变量,也就是这个属性或者方法是可以通过类来访问,当class文件被加载进内存,开始初始化的时候,被static修 ...
- java 类 重新加载_Java动态类加载和重新加载的详细介绍
本篇文章给大家带来的内容是关于Java动态类加载和重新加载的详细介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. Java中可以在运行时加载和重新加载类,虽然并不像我们想像中那么简 ...
- java类验证和装载顺序_Java类的加载机制和双亲委派模型
Java类的加载机制和双亲委派模型 1类的加载机制 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括了:加载(Loading).验证(Verification).准备(Prepar ...
- Java类Demo中存在_Java中的数据类型转换
先来看一个题: Java类Demo中存在方法func0.func1.func2.func3和func4,请问该方法中,哪些是不合法的定义?( ) public class Demo{ float fu ...
- java类与对象实验_JAVA类与对象实验报告
<JAVA类与对象实验报告>由会员分享,可在线阅读,更多相关<JAVA类与对象实验报告(6页珍藏版)>请在人人文库网上搜索. 1.面向对象程序设计实验报告实验三.类与对象(1) ...
最新文章
- vue.js crud_如何使用VS Code和ADO.NET使用ASP.NET Core执行CRUD操作
- mysql 事务 返回插入的值_Mysql同一个事务内记录成功插入后查询不出来
- ant基本标签 及import properties
- NAVICAT MYSQL 建表字段 默认值、EMPTY STRING、空白、NULL 的区别
- 额外sql使用什么封装_为什么建立社区值得付出额外的努力
- 设计模式(二)--里氏替换原则(Java的继承规范)
- 【torch】pytorch label的one-hot转化
- c语言按键中断程序,单片机C语言代码:外部中断,按下中断按键LED不亮,LED1正常亮...
- [连载]《C#通讯(串口和网络)框架的设计与实现》-1.通讯框架介绍
- python如何批量导出数据_【Python】批量导出数据并处理——第一弹
- iic协议 c语言,IIC协议-C语言
- 设计模式:Builder模式
- 软件录制电脑扬声器音频的原理
- 黑苹果0004——制作u盘并开始安装
- 尚硅谷nodejs入门教程_笔记
- Java—二维码生成与识别(一)
- 口令登陆创新的一些想法
- Tomcat单机多实例配置
- 【多线程与高并发】JMM内存模型 基础
- 矩阵特征值和椭圆长短轴的关系?
热门文章
- ADAS系统长篇综述(下)
- 2021年大数据Flink(三十六):​​​​​​​Table与SQL ​​​​​​案例三
- LookupError: unknown encoding: uft-8
- Scala函数式编程(三) scala集合和函数
- 儿子和女儿——解释器和编译器的区别与联系
- Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现
- 把对像生成json并存储到文件
- Ubuntu 18 snap 占用 100%,卸载 snap
- 如何找到自己的优势并坚定信念执行下去
- 【总结】sqli-labs Less(1-35) 小结