`

构造函数、静态语句块、非静态语句块的执行顺序

    博客分类:
  • Java
阅读更多
1用来测试的父类
public class testFather {
	public testFather(){
		System.out.println("我是无参数构造,父类");
	}
	public testFather(String a){
		System.out.println("我是有参数构造,父类,参数是"+a);
	}
	//非静态语句块
	{
		System.out.println("我是父类的非静态语句块!");
	}
	//静态语句块
	static{
		System.out.println("我是父类的静态语句块!");
	}

}

2.用来测试的子类
public class testSon extends testFather{
	public testSon(){
		System.out.println("我是子类的无参数构造!");
	}
	public testSon(String a){
		System.out.println("我是子类的有参数构造,参数是"+a);
	}
	//非静态语句块
	{
		System.out.println("子类的非静态语句块!");
	}
	//静态语句块
	static{
		System.out.println("子类的静态语句块!");
	}
}

3.测试方法类
public class testOrder {
	public static void main(String[] args) {
		new testSon();
//		new testSon("a");
	}
}

输出结果:
我是父类的静态语句块!
子类的静态语句块!
我是父类的非静态语句块!
我是无参数构造,父类
子类的非静态语句块!
我是子类的无参数构造!

测试结果:执行顺序是父类静态语句块>子类静态语句块>父类非静态语句块>父类的构造>子类的非静态语句块>子类的构造
总结:1.静态语句块优先级最高,父类的高于子类的;
      2.非静态语句块先于构造先执行,先执行父类的在执行子类的
0
0
分享到:
评论

相关推荐

    构造函数与静态块的执行顺序

    这是因为静态块是在类加载时执行的,而类的加载顺序是按照继承层次自上而下进行的,所以父类的静态块总是先于子类的静态块执行。 2. **构造函数的执行**:接下来,父类的构造函数会被调用,然后才是子类的构造函数...

    java中静态代码块与构造方法的执行顺序判断

    在Java编程语言中,了解静态代码块和构造方法的执行顺序是至关重要的,尤其是在处理类的初始化和对象的创建时。下面将详细解释这些概念及其执行逻辑。 首先,静态代码块(也称为静态初始化器)是由`static`关键字...

    重写重载构造函数

    在此示例中,基类的构造函数在执行构造函数块之前被调用。base关键字可带参数使用,也可不带参数使用。构造函数的任何参数都可用作base的参数,或用作表达式的一部分。 重写重载构造函数是面向对象编程中的一种重要...

    C#中构造函数和析构函数的用法

    构造函数的执行顺序是从基类到派生类,确保所有层次的初始化都能正确进行。 #### 析构函数:清理非托管资源 **1. 原理与作用** 析构函数是一种特殊的成员函数,用于执行对象销毁前的清理工作,尤其是在处理非托管...

    Java类的完整构造执行顺序

    而类初始化则是指在类首次被使用时,JVM执行的一系列初始化操作,包括静态变量赋值、静态代码块执行等。 根据题目提供的内容,我们可以总结出Java类构造执行的详细步骤,这些步骤确保了类的正确初始化以及对象的...

    c#函数方法,构造函数与析构函数

    在C#编程语言中,函数方法、构造函数与析构函数是对象导向编程的重要组成部分,它们各自承担着不同的角色,并且对于程序的正确运行和优化性能具有重要作用。下面将详细介绍这三个概念及其用法。 ### 函数方法 在C#...

    java 基础 类对象创建实例化过程 实例解析

    * 继承树中的从最高层开始的实例语句块{}、然后对应的构造函数、以及构造函数中调用的方法 * (如果是重写即子类将父类的实例方法重写类,则调用子类的,如果是隐藏即方法则父类中声明为静态方法,则调用父类本身的...

    C++中构造函数与析构函数的调用顺序详解

    3. **构造函数体内的语句**:最后,执行构造函数主体中的代码。 例如,在给定的代码示例中,类`E`继承自`B`和`A`,并且拥有成员对象`D`和`C`。根据上述规则,构造顺序为:`B(5)`(因为`B(5)`在成员初始化列表中被...

    C# 静态构造函数使用总结

    4. **静态字段初始化**:静态字段的初始化直接写在字段声明后的赋值语句会在静态构造函数之前执行。这是静态字段的预初始化,然后由静态构造函数进行进一步的初始化工作。 5. **唯一性**:每个类只能有一个静态构造...

    C 程序设计课件:第12章 构造函数.ppt

    构造函数调用的顺序遵循成员在类定义中的声明顺序,这意味着初始化列表中的成员初始化顺序也应与声明顺序一致。 最后,析构函数是与构造函数相对的特殊成员函数,用于在对象生命周期结束时执行清理工作,如释放动态...

    编程思想14章构造函数的初始化表达式

    这是构造函数体之外的一组初始化语句,它以冒号(:)开始,然后列出要初始化的成员及其对应的值。例如: ```cpp MyClass::MyClass(int val) : member1(val), member2(val * 2) {} ``` 这里,`member1`和`member2`在...

    2020阶段测试2复习题STU答案.docx

    虚基类的构造函数会在非虚基类之前调用(选项B错误),如果有多个虚基类,构造函数按声明顺序调用(选项C正确),即使虚基类是从非虚基类派生的,也会先调用基类构造函数,然后是派生类构造函数(选项D正确)。...

    c++模拟测试题

    11、A 为类,执行语句 A a1,a2(2),*a3[3];调用了 A 的构造函数 6 次。N 12、派生类后于基类构造,先于基类释放。Y 13、类是对象的抽象,对象是类的具体化。Y 14、二进制文件中数据的存放格式和计算机内存中存储的...

    深入浅析Java中普通代码块、构造代码块与静态代码块

    - **主方法**(`main`方法):程序的入口点,静态代码块执行完毕后执行。 - **构造代码块**:每次创建类的新实例时执行。 - **构造函数**:最后执行,用于初始化新创建的对象。 例如,在给定的示例中,静态代码块在...

    C++Hook(钩子)编程,通过内联汇编,使类成员函数代替全局函数(静态函数)[收集].pdf

    通过内联汇编,构造类对象独享的函数(委托),完成了类成员函数到普通全局函数的转化,并在Windows Hook(钩子)编程中得到成功的实践。 首先,我们需要了解Hook(钩子)编程的基本概念。在Windows系统中,Hook(钩子)...

    java代码-日常练习33,代码块### 静态代码块 static{代码内容;} 随着类的加载就执行一次 构造器代码块 {代码内容;} 每创建对象就执行一次 局部代码块 {代码内容;} 方法执行一次执行一次

    在Java编程语言中,代码块是程序中一组按顺序执行的语句,它们可以有特定的作用域和执行时机。在日常练习33中,我们关注的是三种不同类型的代码块:静态代码块、构造器代码块和局部代码块。下面将详细讲解这三种代码...

    Python构造函数及解构函数介绍

    在Python编程语言中,构造函数和解构函数是两个非常重要的概念。构造函数是一种特殊的方法,它在创建对象时自动被调用,用来初始化对象的属性。而解构函数则是在对象被删除前调用的特殊方法,用于执行一些清理工作。...

    java中静态与非静态的变量定义与使用

    这意味着它们的初始化顺序早于 `main` 函数中的其他语句。这种特性使得静态变量可以在类的生命周期早期就被使用,即使没有创建任何实例。 在 `Table` 类和 `Cupboard` 类的构造器中,可以看到静态变量的初始化会...

    在Java中自由块的执行顺序

    总结来说,Java中的自由块执行顺序是静态自由块在类加载时执行,非静态自由块在创建对象时执行,并且遵循继承的层次结构。理解这一执行顺序有助于优化代码,避免在类加载和对象创建过程中出现预期之外的行为。

    类初始化顺序示例讲解

    3. **初始化块与成员变量初始化的顺序**:如果静态成员变量定义与静态初始化块同时存在,则先执行静态成员变量的初始化;同理,对于非静态成员变量也是如此。 掌握这些原则可以帮助开发者更准确地控制类的初始化...

Global site tag (gtag.js) - Google Analytics