java构造器的顺序依赖

在执行扩展类的构造方法中,需要执行一下步骤:

  • 调用父类的构造方法
  • 执行字段的初始器
  • 执行构造器体

例如

public class animal {
    int animalbirthage = 0;
    int nowage;
    public animal(){
        nowage = animalbirthage;
    }
}

class human extends animal{
    int humanbirthage = 1;
    public human(){
        this.nowage = humanbirthage;
    }
}

那么,当我们生成一个human的对象时,它的字段nowage经历了怎样的变化呢?

其实,经历了在8个步骤:

  1. 将字段设置为默认值,nowage是一个int的基本数据类型,那么它的默认值是0;

  2. 调用human的构造器

  3. 默认调用父类animal的构造器

  4. 默认调用父类Object的构造器

  5. animal的字段初始化,这时nowage变成了0

  6. 执行animal的构造器,这里没有,跳过

  7. human的字段初始化,这时nowage变成了1

  8. 执行human的构造器,这里没有,跳过

结束

猜你喜欢

转载自blog.csdn.net/weixin_34064653/article/details/90863456
今日推荐