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关键字可以修饰方法与变量: 修饰变量的时候,这个变量属于类变量,可以直接通过类名.变量名来引用. 修饰方法的时候可以直接通过类名.方 ...
随机推荐
- Linux系统Centos安装Python3.7
Linux下默认系统自带python2.7的版本,这个版本被系统很多程序所依赖,所以不建议删除,如果使用最新的Python3那么我们知道编译安装源码包和系统默认包之间是没有任何影响的,所以可以安装py ...
- Netty源码分析之NioEventLoop(一)—NioEventLoop的创建
一.NioEventLoop的概述 NioEventLoop做为Netty线程模型的核心部分,从本质上讲是一个事件循环执行器,每个NioEventLoop都会绑定一个对应的线程通过一个for(;;)循 ...
- 更新上篇文章 调用三级目录文章内容 dede频道页实现三级栏目嵌套调用文章
原文:http://www.wuaie.com/?p=66 源码改写 $typeid = $row['id']; if((class_exists('PartView'))) { $pv = new ...
- WPF Demo5
<Application x:Class="Demo5.App" xmlns="http://schemas.microsoft.com/winfx/2006/xa ...
- winform截屏
引自 http://www.cnblogs.com/aland-liu/archive/2011/07/20/Winform.html 已经注册博客好久,一直由于工作原因没有打理.今天在网上看了一个截 ...
- wxWidgets:动态EVENT绑定
我们已经看到如何使用静态EVENT TABLE来处理EVENT:但这种方式不够灵活.下面我们来看看如何在Event和处理函数间实现动态Bind. 仍然以那个简陋的Frame作为例子. 首先删除所有的静 ...
- wxWidgets:给窗口添加工具条
请先看上一篇<wxWidgets入门>. 修改MyFrame.h: #ifndef MYFRAME_H #define MYFRAME_H #include <wx/wxprec.h ...
- Jsoncpp 使用方法大全
Json(JavaScript Object Notation )是一种轻量级的数据交换格式.简而言之,Json组织形式就和python中的字典, C/C++中的map一样,是通过key-value对 ...
- Source引擎多人模式网络同步模型
转自:http://gad.qq.com/program/translateview/7168875 Source引擎的多人游戏使用基于UDP通信的C/S架构.游戏以服务器逻辑作为世界权威,客户端和服 ...
- 关于Oracle与MySQL的使用总结
平时使用的比较多的数据库管理系统就是Oracle和MySQL,我在这里记录下使用过程中的遇到的问题以及解决方案,以备不时之需 Oracle 关于表空间 Oracle创建数据的代价还是比较大的,所以使用 ...