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
    
    

    更多精彩请关注

  • 相关阅读:
    SharePoint研究之表单登录配置
    asp.net自定义控件之加载层
    可替换参数在SharePoint和VS中的使用
    C#树类型及其遍历
    Asp.net下拉树实现(Easy UI ComboTree)
    驾校考试科目三心得
    c#pdf查看器
    jquery获取服务器控件Label的值
    [JLOI2014] 松鼠的新家 (lca/树上差分)
    洛谷P1445 [Violet] 樱花 (数学)
  • 原文地址:https://www.cnblogs.com/qingmiaokeji/p/12354472.html
Copyright © 2011-2022 走看看