JAVA 构造函数变量初始化顺序 引言 在Java中,构造函数是一个特殊的方法,用于创建和初始化对象。在创建一个对象时,构造函数会被自动调用,并按照特定的顺序初始化类的成员变量
JAVA 构造函数变量初始化顺序
引言
在Java中,构造函数是一个特殊的方法,用于创建和初始化对象。在创建一个对象时,构造函数会被自动调用,并按照特定的顺序初始化类的成员变量。了解和掌握构造函数和变量初始化的顺序对于Java开发者来说是非常重要的。本文将向刚入行的小白介绍Java构造函数变量初始化顺序,并提供相应的代码和解释。
流程图
journey
title Java构造函数变量初始化顺序流程图
section 构造函数变量初始化顺序
[*] --> 创建对象
创建对象 --> 初始化父类静态变量
初始化父类静态变量 --> 初始化子类静态变量
初始化子类静态变量 --> 初始化父类实例变量和代码块
初始化父类实例变量和代码块 --> 调用父类构造函数
调用父类构造函数 --> 初始化子类实例变量和代码块
初始化子类实例变量和代码块 --> 调用子类构造函数
调用子类构造函数 --> 结束
详细步骤
MyClass obj = new MyClass();
使用new
关键字创建一个对象实例,此时构造函数会被自动调用。
初始化父类静态变量
static int parentStaticVariable = 10;
首先,初始化父类的静态变量。静态变量与类相关,只会初始化一次,不会因为对象的创建而多次初始化。
初始化子类静态变量
static int childStaticVariable = 20;
接着,初始化子类的静态变量,同样只会初始化一次。
初始化父类实例变量和代码块
int parentInstanceVariable;
<br> static { parentStaticVariable = 30; }
然后,初始化父类的实例变量和代码块。实例变量是对象的一部分,每个对象都有自己的实例变量,且在对象创建时被初始化。代码块用于在创建对象时执行一段代码。
调用父类构造函数
public ParentClass() { ... }
父类构造函数会执行父类的初始化过程,可以做一些必要的初始化操作。
初始化子类实例变量和代码块
int childInstanceVariable;
<br>{ childInstanceVariable = 40; }
接着,初始化子类的实例变量和代码块。
调用子类构造函数
public ChildClass() { super(); ... }
子类构造函数会首先调用父类构造函数,然后执行子类的初始化过程。
结束
所有变量的初始化和构造函数的调用完成,对象创建完毕。
类图
classDiagram
class MyClass {
+MyClass()
}
class ParentClass {
-int parentInstanceVariable
+ParentClass()
}
class ChildClass {
-int childInstanceVariable
+ChildClass()
}
MyClass --> ParentClass
MyClass --> ChildClass
ChildClass --> ParentClass
示例代码
MyClass.java
public class MyClass {
public MyClass() {
// 构造函数
}
public static void main(String[] args) {
MyClass obj = new MyClass();
}
}
ParentClass.java
public class ParentClass {
static int parentStaticVariable = 10;
int parentInstanceVariable;
static {
parentStaticVariable = 30;
}
public ParentClass() {
// 父类构造函数
}
}
ChildClass.java
public class ChildClass extends ParentClass {
static int childStaticVariable = 20;
int childInstanceVariable;
{
childInstanceVariable = 40;
}
public ChildClass() {
super(); // 调用父类构造函数
// 子