JAVA中初始化顺序复习
【摘要】
static final、static、final区别
static:静态,全局变量,类的对象共享一个静态变量,只初始化一次。
final:常量,如果是方法则不可覆盖,如果是类不可被继承,必须初始化时设置值,设置后就不能改了
static final:静态常量
初始化顺序如下:
父类静态变量(静态初始化话块)>...
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
文章来源: panda1234lee.blog.csdn.net,作者:panda1234lee,版权归原作者所有,如需转载,请联系作者。
原文链接:panda1234lee.blog.csdn.net/article/details/9138511
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)