您的位置 首页 java

「教3妹学java」4.Java中变量,代码块,构造器之间执行顺序

「教3妹学java」4.Java中变量,代码块,构造器之间执行顺序

3妹

2哥 :3妹,你了解Java中的父子类吗?
3妹 :这个了解啊, 有了父类、子类的概念,所以Java才有了继承、多态。
2哥 :nice, 很好,那你知道父子类中变量,代码块,构造器之间执行顺序是怎样的吗?
3妹 :emmm……这个太多了,我还没有理明白。
2哥 :今天我们就来学习这个。

讲课

Java程序中类中个元素的初始化顺序 初始化的原则是:

  • 先初始化静态部分,再初始化动态部分,
  • 先初始化父类部分,后初始化子类部分,
  • 先初始化变量,再初始化代码块和构造器。

所以依照这个规则可以得出总体顺序是:

示例:

下面写了一个Demo进行验证:

 public class Base {
    static Instance staticInstance = new Instance("1---Base类的静态成员变量staticInstance");
    static  {
        System.out.println("2---Base类的静态代码块执行了");
    }
    Instance instance = new Instance("5---Base类的普通成员变量instance");
    {
        System.out.println("6---Base类的动态代码块执行了");
    }
    Base() {
        System.out.println("7---Base类的构造器方法执行了");
    }
}

public class Child extends Base {
    static Instance staticInstance = new Instance("3---Child类的静态成员变量staticInstance");
    static  {
        System.out.println("4---Child类的静态代码块执行了");
    }
    Instance instance = new Instance("8---Child类的普通成员变量instance");
    {
        System.out.println("9----Child类的动态代码块执行了");
    }
    Child() {
        System.out.println("10---Child类的构造器方法执行了");
    }
    public static void main(String[] args) {
        Child child = new Child();
    }
}
  

输出结果如下:

1—Base类的静态成员变量staticInstance进行了初始化
2—Base类的静态代码块执行了
3—Child类的静态成员变量staticInstance进行了初始化
4—Child类的静态代码块执行了
5—Base类的普通成员变量instance进行了初始化
6—Base类的动态代码块执行了
7—Base类的构造器方法执行了
8—Child类的普通成员变量instance进行了初始化
9—-Child类的动态代码块执行了
10—Child类的构造器方法执行了点击复制代码复制出错复制成功

说明确实是按照上面的执行顺序执行的。

文章来源:智云一二三科技

文章标题:「教3妹学java」4.Java中变量,代码块,构造器之间执行顺序

文章地址:https://www.zhihuclub.com/182064.shtml

关于作者: 智云科技

热门文章

网站地图