Java初始化顺序

Java初始化顺序:①类变量、类方法>②(父类代码)>③实例变量>④构造器
当一个类要实例化时,static变量和方法先被初始化;接着进入父类初始化流程,接着实例化本类的实例变量,调用构造器。

这样会造成一个问题:父类构造器中调用了可以被子类重写的方法(非static、final、private),而这个方法又调用了实例变量时,在初始化的时候实际上调用的时子类中已经重写了的方法,因而使用的也是子类的实例变量,而这时子类实例变量还未被初始化(*此时该变量只是被统一设置为二进制的0),所以会出现意想不到的错误。要避免这种写法。

*在②中,当所有的父类都被加载完后,对象被创建,对象中所有基本类型被设置为默认值,对象引用被设置为null。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 官方文档 初始化 Initialization是为准备使用类,结构体或者枚举实例的一个过程。这个过程涉及了在实例里...
    hrscy阅读 4,801评论 0 1
  • 1 无继承情况下的Java初始化顺序: 输出结果为: 由此可以得出结论: a静态成员变量首先初始化(注意,Stat...
    姜殷俊阅读 2,720评论 0 1
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,898评论 18 399
  • 本章将会介绍 存储属性的初始赋值自定义构造过程默认构造器值类型的构造器代理类的继承和构造过程可失败构造器必要构造器...
    寒桥阅读 4,112评论 0 0
  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 7,573评论 0 11