java面对对象入门-程序块初始化

有理想的coder      2022-05-09     204

关键词:

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

更多精彩请关注
技术图片

java面向对象入门-java构造方法

...),使您可以在应用程序内部的其他类使用对象之前完全初始化对象状态。Java中的构造方法是使用new关键字调用的。下面让我们更深入地了解构造函数。1.什么是java构造函数构造函数是一种特殊的方法,类似于(没有确切的方... 查看详情

java类加载和对象初始化

对象初始化过程: 1.首先,初始化父类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化; 2.然后,初始化子类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化; 3.其次,初始化父类... 查看详情

java面对对象程序设计——面对对象(代码片段)

...类名完全一致,它用于在创建对象时对成员变量进行初始化。类和对象的概念类(class)和对象(object)是两种以计算机为载体的计算机语言的合称。. 对象是对客观事物的抽象,类是对对象的抽象。.类是一种抽象... 查看详情

java面向对象--代码块(初始化块)和内部类

本篇博客介绍Java学习过程中类的成员之代码块(初始化块)和内部类的具体使用。目录:?代码块(初始化块)?内部类(Innerclass)?代码块(初始化块)代码块的概述?代码块(或初始化块)的作用:对Java类或对象进行初始化操作?代码块(或... 查看详情

面对对象第三单元总结

面对对象第三单元总结一、架构设计、图模型构建第1次作业实现自己的Person、Network和Group类和异常类。图模型构建:需要实现社交网络Network内的连通块,只要能通过一条关系链链接上的Person都在同一个连通块内。具体策略:初... 查看详情

静态代码块构造代码块构造函数以及java类初始化顺序

...函数时不会运行的。2.构造函数的作用是用于给对象进行初始化。3.一个对象建立,构造函数只运行一次,而一般方法可以被该对象调用多次。回到顶部构造代码块{//构造代码块}关于构造代码块,以下几点要注意:构造代码块的... 查看详情

java类初始化块

java里初始化一个类的对象,通过初始化快或者构造方法进行数据赋值。与其相关的执行代码有这么几种:静态初始化块初始化块构造方法静态初始化块静态初始化块只在类加载时执行一次,同时静态初始化块只能给静态变量赋... 查看详情

201771010101白玛次仁《2018面向对象程序设计(java)》第七周学习总结

...,并且具有父类所不具有的一些属性或方法。2.继承中的初始化顺序:从类的结构上而言,其内部可以有如下四种常见形态:属性(包括类属性和实例属性)、方法(包括类方法和实例方法)、构造器和初始化块(包括类的初始... 查看详情

java面对对象程序设计——面对对象(代码片段)

重点掌握1.类是对一类事物描述,是抽象的、概念上的定义;对象是实际存在的该类事物的每个个体,因而也称为实例2.创建对象的格式是:类名对象名称=new类名();3.方法的声明格式是:[<修饰符>]<返... 查看详情

java面向对象编程-5.2

...块非主类中定义静态块静态块执行主要是给static属性进行初始化的此时可以发现静态代码块会优先于构造块执行,并且不管有多少个实例化对象出现,静态代码块只会执行一次静态代码块主要目的是为了类中静态属性初始化。静... 查看详情

java入门系列this关键字

...下对象创建的过程1、分配对象空间,并将对象成员变量初始化为0或空2、执行属性值的显示初始化3、执行构造方法4、返回对象的地址给相关的变量本质this关键字的本质:创建好的对象的地址。由于在构造方法调用前,对象已经... 查看详情

java超简明入门学习笔记

Java编程思想第4版学习笔记(三)第五章初始化与清理(构造器和垃圾回收机制)    Java有和C++类似的构造函数来为新创建的对象执行初始化及完成一些特殊的操作,有的类数据成员可能会被初始化几次,它们的初... 查看详情

java实例化(代码片段)

初始化块实际上,初始化块是一个假象,使用javac命令编译java类后,初始化块会消失,初始化代码被还原到每个构造器中代码的最前面在实例化的过程中:前面的初始化块先执行,后面的后执行初始化块的修饰符只能是static普通... 查看详情

java创建对象的初始化过程

1.父类静态成员变量和静态代码块(java虚拟机加载类时,就会执行该块代码,故只执行一次)2.子类静态成员变量和静态代码块(java虚拟机加载类时,就会执行该块代码,故只执行一次)3. 父类普通成员变量4.父类普通代码... 查看详情

面向对象入门2--继承

...nbsp;  构造代码块:类中的成员位置,{代码块}用来给对象的数据 查看详情

类与对象归档

1,总结Java字段初始化的规律。 Java初始化的地方有两个:初始化块和构造函数,其中初始化又分为实例初始化块和静态初始化块,实例初始化块没有关键字修饰,而静态初始化块由static修饰。 执行类成员定义时指定的默... 查看详情

java初始化块详解(代码片段)

文章目录初始化块概念初始化块定义初始化块举例初始化块与构造器区别静态初始化块初始化块执行顺序代码案例摘自:https://blog.csdn.net/a647777/article/details/108789049概念摘自百度百科初始化块概念初始化块用于初始化类的对象... 查看详情

类加载过程(clinit()),对象实例化过程(init())

...clinit方法。3、clinit方法中的执行顺序为:父类静态变量初始化,父类静态代码块,子类静态变量初始化,子类静态代码块。4、clinit()方法只执行一次。对象实例化过程:1、对象实例化过程就是执行Java程序编译之后在字节码文件... 查看详情