静态代码块,非静态代码库,构造函数,子父继承代码执行顺序
来源:互联网 发布:淘宝0月租流量卡真的吗 编辑:程序博客网 时间:2024/06/04 00:02
静态代码块与静态方法的区别?
- 什么情况下使用
- 静态代码块:在项目启动的时候就需要执行的代码,这些代码是主动执行的;
- 静态方法:在项目启动的时候就初始化,在不创建对象的情况下,能够直接使用的,这种代码是被动的。静态方法在类加载的时候就已经初始化,可以用类名直接调用;
- 使用静态方法的注意几点
- 静态方法只能调用同类中静态成员,不能访问非静态成员
- 静态方法不能以任何方式引用this和super关键字,加载静态方法时,this所用的对象根本没有创建。
- 静态变量是所以不能定义在方法体内,因为静态变量是针对整个类的
静态代码块,构造方法的初始化顺序
package com.cjm.mvnbook.test1;public class FatherTest { public String name; public static String staticName = "22"; FatherTest(){ System.out.println("--父类的无参构造函数--静态变量为:" + this.staticName + "--非静态变量为:" + this.name); } FatherTest(String name){ this.name=name; System.out.println("--父类的有参构造函数--"+this.name); } static{ System.out.println("--父类的静态代码块--静态变量为=" + staticName ); } { System.out.println("--父类的非静态代码块--静态变量为=" + staticName + "--非静态变量为=" + this.name ); } public void speak(){ System.out.println("--父类的方法--"); }}
package com.cjm.mvnbook.test1;public class SonTest extends FatherTest { private String name; private static String staticName = "33"; @Override public void speak(){ System.out.println("--子类Override了父类的方法--" + super.staticName); } public SonTest(){ System.out.println("----子类无参的构造方法------"); } public SonTest(String name){ System.out.println("----子类有参的构造方法 "+this.name+ "------"); this.name = name; } { System.out.println("---子类的非静态代码块---"); } static { System.out.println("---子类的静态代码块---"); }}
执行结果
结论
- 单个类中类先执行静态变量和静态代码块,然后非静态代码快,再就是构造方法,最后就是具体的方法
- 当有继承关系时,子类在构造对象时,先执行父类的静态代码块->然后再执行子类的静态代码库。因为静态代码块是在类加载的时候就已经在执行,然后执行父类的非静态代码库,父类的无参构造方法,子类的非静态代码块,子类的构造方法
- 注意:子类的构造方法,不管这个构造方法带不带参数,默认的它都会先去寻找父类的不带参数的构造方法。如果父类没有不带参数的构造方法,那么子类必须用supper关键子来调用父类带参数的构造方法,否则编译不能通过。
0 0
- 静态代码块,非静态代码库,构造函数,子父继承代码执行顺序
- JAVA继承关系中静态代码块、非静态代码块,构造函数的执行顺序
- Java继承中父类子类构造方法、静态代码块、非静态代码块的执行顺序
- 静态代码块、非静态代码块、构造函数的执行顺序
- 静态代码块&非静态代码块&构造函数的执行顺序
- 举例说明java中静态代码块、非静态代码块、构造函数的执行顺序
- Java中静态代码块、非静态代码块和构造函数的执行顺序
- Java中静态代码块、非静态代码块、构造函数的执行顺序与作用
- java中静态代码块,非静态代码块,构造函数之间的执行顺序
- static静态代码块与非静态代码块与构造函数执行顺序
- 静态代码块,非静态代码块,构造函数,普通方法执行顺序
- JAVA静态代码块、非静态代码块、构造函数的执行顺序
- 静态代码块、非静态代码块、构造函数三者执行顺序
- java继承中父类和子类静态、非静态代码块,构造函数,静态方法的执行顺序
- 静态代码块 构造函数 静态代码块块执行顺序
- java 静态代码块 代码块 构造函数执行顺序
- 静态代码块,代码块,构造函数的执行顺序
- 静态代码块、代码块、构造函数执行顺序
- 大学生活所感
- Java 实现基于 UDP 的简单 socket 通信
- 压力测试工具JMeter入门教程
- Python :二叉树的深度
- 初识vue系列之二
- 静态代码块,非静态代码库,构造函数,子父继承代码执行顺序
- maven的依赖传递性讲解
- kill命令
- LoadRunner判断是否服务器连接池瓶颈
- 应用电路笔记(1)-三极管8550和8050应用
- Python :平衡二叉树
- 55. Jump Game
- killall命令
- 汇编知识复习总结——基础知识