类加载与初始化顺序
来源:互联网 发布:网络词扑街是什么意思 编辑:程序博客网 时间:2024/06/04 18:28
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">1、自下而上加载类的编译代码</span>
运行java程序时,首先要找main(),于是启动加载器加载main对应类的编译代码,在加载过程中,若发现有基类,则加载基类,以此类推。也就是从基类向下加载
2、自上而下的初始化static
可以看作是类加载时进行的,static初始化顺序,就是类加载顺序
3、默认初始化:基本类型和对象类型
4、基类构造器
5、变量定义的顺序显式初始化
6、自身的构造器
7、例:
class Meal {Meal() { System.out.println("Meal()"); }static {System.out.println("Meal static");}}class Bread {Bread() { System.out.println("Bread()"); }}class Cheese {Cheese() { System.out.println("Cheese()"); }static {System.out.println("Cheese static");}}class Lettuce {Lettuce() { System.out.println("Lettuce()"); }}class Lunch extends Meal {Lunch() { System.out.println("Lunch()"); }static {System.out.println("Lunch static");}}class PortableLunch extends Lunch {PortableLunch() { System.out.println("PortableLunch()"); }static {System.out.println("PortableLunch static");}}public class Sandwich extends PortableLunch {private Bread b = new Bread();private Cheese c = new Cheese();public Sandwich() { System.out.println("Sandwich()"); }private Lettuce l = new Lettuce();static {System.out.println("Sandwich static");}public static void main(String[] args) {// TODO Auto-generated method stubnew Sandwich();}}
0 0
- 类加载与初始化顺序
- Java 类加载顺序与成员变量初始化
- 类的加载,初始化顺序
- java 类加载-初始化顺序
- Java加载的顺序与初始化
- java类的加载以及初始化顺序
- java类的加载以及初始化顺序
- java类的加载以及初始化顺序
- java类的加载以及初始化顺序
- Java类的加载及初始化顺序
- java类的加载以及初始化顺序
- java类加载和初始化顺序
- Java类加载问题:变量初始化顺序
- JAVA类加载(初始化)顺序
- JAVA基础教程:类加载和初始化顺序
- Java类加载及初始化顺序
- 类的加载和初始化顺序
- 类的加载顺序,初始化块
- HDU 1257 最少拦截系统
- gsensor架构和原理分析
- python 实现 RPC 通信
- 用OC语⾔言完成简易通讯录(实现增删改查)功 能. (注:使用MRC)
- MFC工具栏中加入combox组合框
- 类加载与初始化顺序
- 利用NSURLProtocol和本地代理实现在线视频边播放边缓存
- iOS开发——创建你自己的Framework
- 编写一个方法,返回某集合的所有子集
- Mac Cornerstone无法上传.a文件
- django 1.8 官方文档翻译: 3-1-4 视图装饰器
- CentOS, FreeBSD, Ubuntu LTS 维护风格的简单比较
- unity 在game视图模型穿插问题
- user,debug,userdebug版本