Java实例初始值设定项

Java 实例初始值设定项(instance initializer)是在执行构造函数代码之前执行的代码块。

每次我们创建一个新对象时,这些初始化器都会运行。

https://onitroad.com 更多教程

Java 实例初始化器的特性

  • 我们可以在一个类中定义多个初始化器。
  • 所有初始化程序都按顺序执行,以便它们出现在类体中。
  • 初始化程序在调用父类构造函数之后和执行子类构造函数之前运行。请注意,如果我们没有明确提供构造函数作为子类构造函数中的第一条语句,Java 会插入父类 super()的默认构造函数。
  • 执行完所有初始化程序后,将执行构造函数的语句。
  • 我们可以在初始化器中调用这个类和父类的构造函数。

实例初始化语法

一个实例初始化块是用花括号创建的。
对象初始化语句写在大括号内。

public class DemoClass {

    // 第1个 初始化块
    {
      //statements
    }
    // 第2个 初始化块
    {
      //statements
    }
}

Java 实例初始化器示例

public class ParentClass 
{ 
  public ParentClass() 
  {
    System.out.println("In ParentClass Constructor");
  }

  //Instance Initializer
  {
    System.out.println("In ParentClass Instance Initializer");
  }
}
public class ChildClass extends ParentClass 
{
  public ChildClass() 
  {
    super();  //If not provided, JVM will insert it
    System.out.println("In ChildClass Constructor");
  }

  //Instance Initializer 1
  { 
    System.out.println("In ChildClass Instance Initializer 1");
  }

  //Instance Initializer 2
  {
    System.out.println("In ChildClass Instance Initializer 2");
  }
}
public class Main 
{
  public static void main(String[] args) 
  {
    ChildClass childObj = new ChildClass();
  }
}

输出:

In ParentClass Instance Initializer
In ParentClass Constructor
In ChildClass Instance Initializer 1
In ChildClass Instance Initializer 2
In ChildClass Constructor
日期:2020-09-17 00:10:22 来源:oir作者:oir