Java 类加载、调用构造器、执行方法的过程

注:整理到这部分知识点时候发现有很多问题还没搞清楚,所以这里可能会存在很多不够详细甚至错误的理解,准备翻一遍编程思想再来更新,

欢迎评论交流

当JVM执行到这么一句代码:  new Person().setName("superzhao")

它会做这么几件事

类加载

JVM会用类加载器加载xxx.Person这个class文件

加载(class){

  if(class有父类){

    加载(superclass);

  }

  1.静态域申明,默认初始化为0,false,null

  2.按照申明顺序(从上而下书写顺序)执行静态域(赋值)和静态代码块(执行代码块体),

    二者等价,因此不可在静态代码块中使用位于代码块之后申明的静态域,但是可以初始化

  3.按照申明顺序加载静态方法

}

构造器被调用(对象初始化)

1.所有实例域初始化为默认值0,false,null

2.按照申明顺序执行域初始化及块初始化

3.如果构造器"第一行"调用了其他构造器,则执行

4.执行构造器体

调用方法

1.编译器查看对象的申明类型,找到它所有与方法名相同的方法

2.根据参数类型,找到相应"最合适"的父类方法可能会出现类型转换(向上转型)

3.如果是private,static,final,构造器 方法,那么已经确定就是该方法(这四种类型的方法没有多态特征),

  因为没有多态所以也叫静态绑定

4.如果是其他方式,采用动态绑定:JVM去寻找改类的实际类型中对应的最合适方法

5.执行调用

原文地址:https://www.cnblogs.com/superzhao/p/4597883.html