JAVA中初始化顺序复习
发布日期:2021-07-01 05:57:14 浏览次数:2 分类:技术文章

本文共 2286 字,大约阅读时间需要 7 分钟。

static final、static、final区别

static:静态,全局变量,类的对象共享一个静态变量,只初始化一次。

final:常量,如果是方法则不可覆盖,如果是类不可被继承,必须初始化时设置值,设置后就不能改了

static final:静态常量

初始化顺序如下:

父类静态变量(静态初始化话块)> 子类静态变量(静态初始化块)>父类普通变量(普通初始化块)>父类构造方法>父类普通方法

>子类普通变量(普通初始化块)>子类构造方法>子类普通方法

下面是一个例子就说明了这一切

package com.loulijun.test1;public class Test1 {    public static void main(String args[])    {        Son son = new Son();        son.say();    }}class Father {        //static final 与 static 没有执行先后顺序,按照代码顺序从上而下执行    //静态变量    public static String str = initStr("Father:静态变量---1");    //静态常量    public static final int i = initfinal(2);    //普通变量    public int j = init(4);        static int initfinal(int i)    {        System.out.println("Father:静态常量---"+i);        return i;    }    static int init(int j)    {        System.out.println("Father:普通变量---"+j);        return j;    }    //静态初始化块    static    {        System.out.println("Father:静态初始化块---3");    }    static String initStr(String str)    {        System.out.println(str);        return str;    }        //初始化块    {        System.out.println("Father:普通初始化块---5");    }    //构造方法    public Father()    {        System.out.println("Father:父类构造器---6");    }        public void say()    {        System.out.println("Father:普通方法---7");    }    }class Son extends Father{    //static final 与 static 没有执行先后顺序,按照代码顺序从上而下执行    //静态变量    public static String str = initStr("Son:静态变量---1");    //静态常量    public static final int i = initfinal(2);    //普通变量    public int j = init(4);    static int initfinal(int i)    {        System.out.println("Son:静态常量---"+i);        return i;    }    static int init(int i)    {        System.out.println("Son:普通变量---"+i);        return i;    }    //静态初始化块    static    {        System.out.println("Son:静态初始化块---3");    }    static String initStr(String str)    {        System.out.println(str);        return str;    }        //初始化块    {        System.out.println("Son:普通初始化块---5");    }    //构造方法    public Son()    {        System.out.println("Son:子类构造器---6");    }        public void say()    {        System.out.println("Son:普通方法---7");    }}

运行结果:

Father:静态变量---1

Father:静态常量---2
Father:静态初始化块---3
Son:静态变量---1
Son:静态常量---2
Son:静态初始化块---3
Father:普通变量---4
Father:普通初始化块---5
Father:父类构造器---6
Son:普通变量---4
Son:普通初始化块---5
Son:子类构造器---6
Son:普通方法---7

转载地址:https://panda1234lee.blog.csdn.net/article/details/9138511 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:[转载]SURF 与 SIFT的共同点与不同点
下一篇:设计模式--6大原则--单一职责原则

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年04月19日 16时43分43秒