java类的成员初始化顺序和初始化块知识
来源:互联网 发布:edius视频编辑软件 编辑:程序博客网 时间:2024/05/19 00:55
属性、方法、构造方法和自由块都是类中的成员,在创建类的对象时,类中各成员的执行顺序:1.父类静态成员和静态初始化快,按在代码中出现的顺序依次执行。
2.子类静态成员和静态初始化块,按在代码中出现的顺序依次执行。
3. 父类的实例成员和实例初始化块,按在代码中出现的顺序依次执行。
4.执行父类的构造方法。
5.子类实例成员和实例初始化块,按在代码中出现的顺序依次执行。
6.执行子类的构造方法。
- public class Test {
- /**
- * Description
- * @param args
- */
- public static void main(String[] args) {
- Son s = new Son();
- }
- }
- class Parent{
- {
- System.out.println("parent中的初始化块");
- }
- static{
- System.out.println("parent中static初始化块");
- }
- public Parent(){
- System.out.println("parent构造方法");
- }
- }
- class Son extends Parent{
- {
- System.out.println("son中的初始化块");
- }
- static{
- System.out.println("son中的static初始化块");
- }
- public Son(){
- System.out.println("son构造方法");
- }
- }
执行结果:
- parent中static初始化块
- son中的static初始化块
- parent中的初始化块 属性、方法、构造方法和自由块都是类中的成员,在创建类的对象时,类中各成员的执行顺序:
1.父类静态成员和静态初始化快,按在代码中出现的顺序依次执行。
2.子类静态成员和静态初始化块,按在代码中出现的顺序依次执行。
3. 父类的实例成员和实例初始化块,按在代码中出现的顺序依次执行。
4.执行父类的构造方法。
5.子类实例成员和实例初始化块,按在代码中出现的顺序依次执行。
6.执行子类的构造方法。
[java] view plaincopy
01.public class Test {
02. /**
03. * Description
04. * @param args
05. */
06. public static void main(String[] args) {
07. Son s = new Son();
08. }
09.
10.}
11.
12.class Parent{
13.
14. {
15. System.out.println("parent中的初始化块");
16. }
17. static{
18. System.out.println("parent中static初始化块");
19. }
20.
21. public Parent(){
22. System.out.println("parent构造方法");
23. }
24.}
25.
26.class Son extends Parent{
27. {
28. System.out.println("son中的初始化块");
29. }
30.
31. static{
32. System.out.println("son中的static初始化块");
33. }
34.
35. public Son(){
36. System.out.println("son构造方法");
37. }
38.
39.}
执行结果:
[plain] view plaincopy
01.parent中static初始化块
02.son中的static初始化块
03.parent中的初始化块
04.parent构造方法
05.son中的初始化块
06.son构造方法
初始化块主要用于对象的初始化操作,在创建对象时调用,可以用于完成初始化属性值、加载其他的类的功能。
初始化块和构造方法功能类似,可以再创建对象的时候完成一些初始化的操作,一般的情况下,构造方法初始化和初始化块初始化可以通用。
构造方法在初始化的时候可以通过参数船只,但是初始化块不能,初始化块的初始化在构造方法之前执行,如果搞糟方法多次重载,此时可以考虑构造方法中共通的代码放到初始化块中进行初始化。
静态初始化块和非晶态初始化块的区别?
非静态初始化块主要是用于对象的初始化操作,在每次创建对象的时都要调用一次,其执行顺序在构造方法之前。
在初始化块之前有static修饰,则为静态初始化块。由于非静态成员不能再静态方法中使用,同样也不能在静态初始化块中,因此,静态初始化块主要用于初始化静态变量和静态方法,静态初始化块只调用一次,是在类的第一次加载到内存时,并非一定要创建对象才执行,
静态初始化块比非静态初始化块先执行。 - parent构造方法
- son中的初始化块
- son构造方法
初始化块主要用于对象的初始化操作,在创建对象时调用,可以用于完成初始化属性值、加载其他的类的功能。
初始化块和构造方法功能类似,可以再创建对象的时候完成一些初始化的操作,一般的情况下,构造方法初始化和初始化块初始化可以通用。
构造方法在初始化的时候可以通过参数船只,但是初始化块不能,初始化块的初始化在构造方法之前执行,如果搞糟方法多次重载,此时可以考虑构造方法中共通的代码放到初始化块中进行初始化。
静态初始化块和非晶态初始化块的区别?
非静态初始化块主要是用于对象的初始化操作,在每次创建对象的时都要调用一次,其执行顺序在构造方法之前。
在初始化块之前有static修饰,则为静态初始化块。由于非静态成员不能再静态方法中使用,同样也不能在静态初始化块中,因此,静态初始化块主要用于初始化静态变量和静态方法,静态初始化块只调用一次,是在类的第一次加载到内存时,并非一定要创建对象才执行,
静态初始化块比非静态初始化块先执行。
0 0
- java类的成员初始化顺序和初始化块知识
- java类的成员初始化顺序和初始化块知识
- java类的成员初始化顺序和初始化块知识
- java类的成员初始化顺序和初始化块知识
- java类的成员初始化顺序和初始化块知识
- java类的成员初始化顺序和初始化块知识
- java类的成员初始化顺序和初始化块顺序
- Java类成员变量、普通成员变量、初始化块、构造方法的初始化和执行顺序
- Java类成员变量、普通成员变量、初始化块、构造方法的初始化和执行顺序
- Java类成员变量、普通成员变量、初始化块、构造方法的初始化和执行顺序
- Java类成员变量、普通成员变量、初始化块、构造方法的初始化和执行顺序
- Java类成员变量、普通成员变量、初始化块、构造方法的初始化和执行顺序
- Java类成员变量、普通成员变量、初始化块、构造方法的初始化和执行顺序
- Java类成员变量、普通成员变量、初始化块、构造方法的初始化和执行顺序
- Java类成员变量、普通成员变量、初始化块、构造方法的初始化和执行顺序
- Java类成员变量、普通成员变量、初始化块、构造方法的初始化和执行顺序
- Java类成员变量、普通成员变量、初始化块、构造方法的初始化和执行顺序
- 关于Java静态成员变量和静态初始化块等的初始化顺序的详细介绍
- 习题3-36
- js校验时间格式
- 关于Linux内核同时运行进程总数的讨论
- tyvj P1209 拦截导弹
- spi slave
- java类的成员初始化顺序和初始化块知识
- 使用volley时 onErrorResponse错误,如何查看详细的信息
- Linux下使用Shell脚本改变当前工作路径
- SQL 语句性能调优
- 终止线程的三种方法
- 批量打包-- ipa
- Linux中Sed命令删除字符串中的部分字符
- ios app应用程序发布到app store流程
- Eclipse的toc扩展点