微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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)还要强调的一点是:不管一个类实例化几次,静态语句块都仅仅执行一次。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐