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
    
    

    更多精彩请关注

  • 相关阅读:
    C#操作ini配置文件和写入日志操作
    asp.net AJAX 定期刷新页面,然后,在 Timer 的事件中弹出窗口
    setInterval和setTimeout的区别
    检测远程URL是否存在
    SharePoint列表的模板类型中的BaseType参数和ListTemplate参数
    TCP中的Flag options
    jQuery基础教程摘录 Hello world
    SharePoint站点无法打开的问题
    SPQuery在引用field的时候要用internal name
    Windows Server 2008中用管理员的权限使用命令行来打开程序
  • 原文地址:https://www.cnblogs.com/qingmiaokeji/p/12354472.html
Copyright © 2011-2022 走看看