java面對對象入門(4)-程序塊初始化

Java實例初始化程序是在執行構造函數代碼以前執行的代碼塊。每當咱們建立一個新對象時,這些初始化程序就會運行。
java

1.實例初始化語法

花括號建立實例初始化程序塊。對象初始化語句寫在括號內。ide

public class DemoClass {
     
    //This is initializer block 1
    {
      //statements
    }
 
    //This is initializer block 2
    {
      //statements
    }
}

2.Java實例初始化器功能

實例初始化器具備如下功能。函數

  • 咱們能夠在一個類中定義多個初始化器
  • 全部初始化程序將按順序執行,以使其出如今類主體中。
  • 初始化程序在調用父類構造函數以後,在執行子類構造函數以前運行。請注意super(),若是咱們未在子類的構造函數中顯式提供第一個語句,則Java會插入父類的默認構造函數。
  • 執行完全部初始化程序後,將執行構造函數的語句。
  • 咱們能夠在初始化器中使用此類和父類的構造函數的調用。

3.Java實例初始化序列流程

基於以上給出的功能,讓咱們概述一下對象的實例初始化如何進行。code

  1. 子類構造函數被調用。
  2. 子類構造函數的第一個語句爲super()(或提供的顯式構造函數),所以將調用父類構造函數。
  3. 父類的初始化程序按其出現順序執行。
  4. 父類構造函數語句被執行。
  5. 子類的初始化程序按其出現順序執行。
  6. 子類構造函數語句被執行。
    對象

    4.Java實例初始化示例

    讓咱們快速地看一個演示以上理論的例子。
    ParentClass.javaget

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

ChildClass.javait

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");
  }
}

Main.javaclass

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

更多精彩請關注
語法

相關文章
相關標籤/搜索