Java中static代码块,{}大括号代码块,构造方法代码块执行顺序!
注:下列代码中的注释都是JUnit4单元测试运行结果。
首先,没有父类的(父类是Object)的类A
package Static.of;
public class A {
{
System.out.println("我是父类-----大括号中的代码");
}
static{
System.out.println("我是父类-------static代码块");
}
public A(){
System.out.println("我是父类A----------的构造方法");
}
}
@Test
public void fathClass(){
A a = new A();//父类
/**
* 我是父类-------static代码块
我是父类-----大括号中的代码
我是父类A----------的构造方法
*/
}
由上面运行结果可知:只要没有父类(只有Object作为父类)那么执行顺序:static代码块,大括号,构造方法。
继承A的类B
package Static.of;
public class B extends A {
{
System.out.println("我是子类大括号中的代码");
}
static{
System.out.println("我是子类static代码块");
}
public B(){
System.out.println("我是子类B的构造方法");
}
}
继承A的类C
package Static.of;
public class C extends A {
{
System.out.println("我是C类 中的大括号");
}
public C (){
System.out.println("我是C中的构造方法");
}
}
@Test
public void sonBClass(){
B b = new B();
/**
* 我是父类-------static代码块
我是子类static代码块
我是父类-----大括号中的代码
我是父类A----------的构造方法
我是子类大括号中的代码
我是子类B的构造方法
*/
}
@Test
public void sonCClass(){
C c = new C();
/**
* 我是父类-------static代码块
我是父类-----大括号中的代码
我是父类A----------的构造方法
我是C类 中的大括号
我是C中的构造方法
*/
}
多态语法创建对象
@Test
public void polymorphicAB(){
A a = new B();
/**
* 我是父类-------static代码块
我是子类static代码块
我是父类-----大括号中的代码
我是父类A----------的构造方法
我是子类大括号中的代码
我是子类B的构造方法
*/
}
@Test
public void polymorphicAC(){
A a = new C();
/**
* 我是父类-------static代码块
我是父类-----大括号中的代码
我是父类A----------的构造方法
我是C类 中的大括号
我是C中的构造方法
*/ }
根据例子总结:
结果是集合{父类static,子类static,父类大括号,父类构造函数,子类大括号,子类构造函数}的一个子集
{}大括号里的是初始化块,这里面的代码在创建java对象时执行,而且在构造器之前!其实初始化块就是构造器的补充,初始化块是不能接收任何参数的,定义的一些所有对象共有的属性、方法等内容时就可以用初始化块了初始化!! 好处是可以提高初始化块的复用,提高整个应用的可维护性。
Java中static代码块,{}大括号代码块,构造方法代码块执行顺序!的更多相关文章
- java中的异常以及 try catch finally以及finally的执行顺序
java中的 try.catch.finally及finally执行顺序详解: 1.首相简单介绍一下异常以及异常的运行情况: 在Java中异常的继承主要有两个: Error和Exception 这两个 ...
- Java中继承时静态块,构造块,构造函数的执行顺序
public class Father { static { System.out.println("Father静态块"); } { System.out.println(&qu ...
- Java中static的用法,初始化块
使用 Arrays 类操作 Java 中的数组语法: Arrays.sort(数组名); 可以使用 sort( ) 方法实现对数组的排序,只要将数组名放在 sort( ) 方法的括号中,就可以完成对该 ...
- Java中static块执行时机
Java中static块执行时机 演示例子 在使用static进行初始化的操作,怎么也执行不了!代码如下: public class StaticDemo { public static final ...
- java中static关键字的作用
java中static关键字主要有两种作用: 第一:为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关. 第二,实现某个方法或属性与类而不是对象关联在一起 简单来说,在Java语言中,s ...
- Java学习笔记十七:Java中static使用方法
Java中static使用方法 一:Java中的static使用之静态变量: 我们都知道,我们可以基于一个类创建多个该类的对象,每个对象都拥有自己的成员,互相独立.然而在某些时候,我们更希望该类所有的 ...
- Java 中 static 的作用
static 关键字的作用 在 Java 中 static 关键字有4种使用场景,下面分别进行介绍: 1.static 成员变量 public class Student { // 静态成员变量 pr ...
- java中static变量和方法的总结
转自:http://blog.csdn.net/haobo920/article/details/5921621 java中static变量和方法的总结 java中一切皆是对象 一个类中对象的定义一般 ...
- Java中static final 与 final 的区别(转载)
转自:http://advance0683.iteye.com/blog/1107732 Java中static final 与 final 的区别: 例子: Java代码 import java.u ...
- Java中static修饰类的问题
Java中static修饰类的问题 众所周知,Java中static关键字可以修饰方法与变量: 修饰变量的时候,这个变量属于类变量,可以直接通过类名.变量名来引用. 修饰方法的时候可以直接通过类名.方 ...
随机推荐
- 【android】 adb logcat命令查看并过滤android输出log
cmd命令行中使用adb logcat命令查看android系统和应用的log,dos窗口按ctrl+c中断输出log记录. logcat日志中的优先级/tag标记: android输出的每一条日志都 ...
- Linux 后台进程管理
fg.bg.jobs.&.ctrl + z命令一. &加在一个命令的最后,可以把这个命令放到后台执行 ,如gftp &,二.ctrl + z可以将一个正在前台执行的命令放到后台 ...
- canvas基础之变换
2D绘制上下文支持各种基本的绘制变换: rotate(angle):围绕原点旋转图像angle弧度.(举例:如需旋转 5 度,可规定下面的公式:5*Math.PI/180.) scale(scaleX ...
- java实验四——找鞍点
package hello; public class 实验四 { public static void main(String[] args) { // TODO Auto-generated me ...
- JIRA 的字段配置
默认字段(Default Field Configuration)配置,最好都是非必填. 项目的字段关联字段方案. 字段方案针对不同问题类型,设置不同的字段配置策略. 在每个字段配置策略中去设置自定义 ...
- OSPF里几个特殊区域(stub、Totally stubby、NSSA、Totally NSSA)总结
网友总结: 简单的说,就是 stub过滤4,5类lsa,ABR会产生缺省的3类lsa,区域内不能引入外部路由 total stub过滤3,4,5类lsa,ABR会产生缺省的3类lsa,区域内不能引入外 ...
- [UE4]角色、动画蓝图、动画蒙太奇、动画之间的调用关系
一.在“角色”中设置要使用的“动画蓝图” 二.在“动画蓝图”中使用“动画”和“混合动画” 三.在“混合动画”中,也可以使用“动画” 四.在角色中使用“动画蒙太奇”
- Maven web项目启动出错
问题描述: 在第一次建立maven项目后,启动测试,结果jsp页面报告404错误 问题解决: 在pom.xml中引入servlet-api 和 jsp-api,maven不会自动的添加,因此,要在首次 ...
- php 流程控制switch实例
switch允许对一个标量(表达式)的多个可能结果做选择. 语法: switch (expr) { case result1: statement1 break; case result2: stat ...
- linux read 系统调用剖析
https://www.ibm.com/developerworks/cn/linux/l-cn-read/ MT注:原文图1与Understanding the Linux Kernel, 3rd ...