zoukankan      html  css  js  c++  java
  • java面对对象入门(4)-程序块初始化

    Java实例初始化程序是在执行构造函数代码之前执行的代码块。每当我们创建一个新对象时,这些初始化程序就会运行。

    1.实例初始化语法

    花括号创建实例初始化程序块。对象初始化语句写在括号内。

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

    2.Java实例初始化器功能

    实例初始化器具有以下功能。

    • 我们可以在一个类中定义多个初始化器
    • 所有初始化程序将按顺序执行,以使其出现在类主体中。
    • 初始化程序在调用父类构造函数之后,在执行子类构造函数之前运行。请注意super(),如果我们未在子类的构造函数中显式提供第一个语句,则Java会插入父类的默认构造函数。
    • 执行完所有初始化程序后,将执行构造函数的语句。
    • 我们可以在初始化器中使用此类和父类的构造函数的调用。

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

    基于以上给出的功能,让我们概述一下对象的实例初始化如何进行。

    1. 子类构造函数被调用。
    2. 子类构造函数的第一个语句为super()(或提供的显式构造函数),因此将调用父类构造函数。
    3. 父类的初始化程序按其出现顺序执行。
    4. 父类构造函数语句被执行。
    5. 子类的初始化程序按其出现顺序执行。
    6. 子类构造函数语句被执行。

    4.Java实例初始化示例

    让我们快速地看一个演示以上理论的例子。
    ParentClass.java

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

    ChildClass.java

    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.java

    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
    
    

    更多精彩请关注

  • 相关阅读:
    REUSE_ALV_GRID_DISPLAY_LVC I_CALLBACK_HTML_TOP_OF_PAGE
    查找数组中最大值java
    jvm 调优
    jvm 内存
    树形遍历文件夹
    程序创建一个ArrayList,添加1到10的10个随机数,删除大于5的数 java
    字符串反序排序 并带有空格输出 java
    摆动排序
    免密登陆
    springboot UEditor集成
  • 原文地址:https://www.cnblogs.com/qingmiaokeji/p/12354472.html
Copyright © 2011-2022 走看看