PS:这两天学了构造方法和代码块,于是把上课学到的东西和笔记做一个整理,归纳一下Java中构造方法和代码块在创建对象的时候执行顺序。废话不多说,上才艺。
首先了解一下构造方法和代码块:
构造方法
构造法和类名一致,其功能主要是完成给对象初始化
构造方法又分为两种:
1.空参构造
2.有参构造
二者的区别在于,你在创建对象的时候有没有写参数,写了参数就调用有参构造,没写就调用空参构造。
初始化块
Java中的初始化块在创建Java对象时隐式执行,并且是在构造函数之前执行。
初始化块与构造方法本质上是一样的,都是传地址,并为对象属性进行初始化
初始化块也分为两种:
1.静态初始化代码块
2.非静态代码块
二者语法上的区别是有无static修饰。具体用法区别暂时不做区分。
了解了构造方法和初始化块功能,那么问题来了,同样是为对象进行初始化,他们的先后顺序是怎么样的呢?我们举一个例子来简单了解一下:
public class Fu01 {
//构造方法
public Fu01() {
System.out.println("父类构造方法");
}
//非静态代码块
{
System.out.println("父类非静态代码块");
}
//静态代码块
static {
System.out.println("父类静态代码块");
}
}
public class Test01 extends Fu01{
//构造方法
public Test01() {
System.out.println("子类构造方法");
}
//非静态代码块
{
System.out.println("子类非静态代码块");
}
//静态代码块
static {
System.out.println("子类静态代码块"