java声明子类时,静态语句块、实例代码块、构造器方法这3者的调用顺序

前端之家收集整理的这篇文章主要介绍了java声明子类时,静态语句块、实例代码块、构造器方法这3者的调用顺序前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

之前写过一个《代码块、构造器方法这3者的调用顺序》,但只是针对一个类而言的。当遇到两个类时,当然这两个类之间是继承关系。那么在声明一个子类时,这3者的调用关系,又是什么样的呢?

1、测试代码

class Base{
//静态语句块
static{
System.out.println("执行基类的静态语句块!");
}
//构造器方法
Base(){
System.out.println("执行基类的构造器方法!");
}
//构造代码
{
System.out.println("执行基类的构造代码块!");
}
}
public class TempTest extends Base {
//静态语句块
static{
System.out.println("执行子类的静态语句块!");
}
//构造器方法
TempTest(){
System.out.println("执行子类的构造器方法!");
}
//构造代码
{
System.out.println("执行子类的构造代码块!");
}
public static void main(String[] args){
TempTest a=new TempTest();
System.out.println("----------------");
TempTest b=new TempTest();
}
}

2、测试结果:

代码块!
执行基类的构造器方法!
执行子类的构造代码块!
执行子类的构造器方法!
----------------
执行基类的构造代码块!
执行基类的构造器方法!
执行子类的构造代码块!
执行子类的构造器方法!

3、结果说明:

(1)一个类中,3者执行顺序:静态语句块、实例代码块、构造器方法

(2)两个类中。声明了子类后,执行顺序:父类静态代码块、子类静态代码块、父类实例代码块、父类构造器方法、子类实例代码块、子类构造器方法

(3)还要强调的一点是:不管一个类实例化几次,静态语句块都仅仅执行一次。

猜你在找的Java相关文章