`
yanguz123
  • 浏览: 570334 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

\(^_^)/ 继承关系中static代码块和普通代码块的执行顺序

    博客分类:
  • Code
 
阅读更多

一、父子类中都是static代码块:

 

class Parent{
	static{
		System.out.println(1);
	}
	public Parent(){
		System.out.println("Parent");
	}
}

class Son extends Parent{
	static{
		System.out.println(2);
	}
	public Son(){
		System.out.println("Son");
	}
}


public class Test {
	public static void main(String[] args) {
		Parent p = new Son(); //或Son p = new Son();
	}
}

输出:
1
2
Parent
Son

 

 

 

 

二、父子类中都是普通代码块

 

class Parent {
	{
		System.out.println(1);
	}

	public Parent() {
		System.out.println("Parent");
	}
}

class Son extends Parent {
	{
		System.out.println(2);
	}

	public Son() {
		System.out.println("Son");
	}
}


public class Test {
	public static void main(String[] args) {
		Parent p = new Son(); //或Son p = new Son();
	}
}

输出:
1
Parent
2
Son

 

 

 

 

 

 

三、父类普通代码块,子类static代码块

 

class Parent {
	{
		System.out.println(1);
	}

	public Parent() {
		System.out.println("Parent");
	}
}

class Son extends Parent {
	static {
		System.out.println(2);
	}

	public Son() {
		System.out.println("Son");
	}
}

public class Test {
	public static void main(String[] args) {
		Parent p = new Son(); //或 Son p = new Son();
	}
}

输出:
2
1
Parent
Son

 

 

 

 

 

 

 

四、父类static代码块,子类普通代码块

class Parent {
	static{
		System.out.println(1);
	}

	public Parent() {
		System.out.println("Parent");
	}
}

class Son extends Parent {
	 {
		System.out.println(2);
	}

	public Son() {
		System.out.println("Son");
	}
}

public class Test {
	public static void main(String[] args) {
		Parent p = new Son(); //或 Son p = new Son();
	}
}

输出:
1
Parent
2
Son

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    Java 普通代码块静态代码块执行顺序(实例讲解)

    这里我们将深入探讨Java中的普通代码块(实例初始化块)和静态代码块的执行顺序,并通过实例来阐述这一概念。 首先,我们需要明白两种类型的代码块: 1. 静态代码块(Static Block):这些代码块在类加载时执行,...

    Java静态代码块作用及执行顺序解析

    在继承关系中,静态代码块的执行顺序是:父类静态代码块 -> 子类静态代码块 -> 父类非静态代码块 -> 父类构造方法 -> 子类非静态代码块 -> 子类构造方法。 静态代码块和静态方法的区别在于:静态代码块是自动执行的...

    Java常见笔试、面试题目深度剖析,方法重写详解、静态代码块与构造方法执行顺序问题

    本文将深度剖析几个常见的Java面试题目,包括方法重写、静态代码块和构造方法的执行顺序。 首先,我们来讨论**方法重写(Override)**。在面向对象编程中,子类可以继承父类的属性和方法,有时需要根据自己的需求对...

    静态代码块

    这种执行顺序体现了Java中静态代码块和实例代码块的执行规则: - 类的静态代码块会在任何实例被创建之前执行,并且只执行一次。 - 子类继承父类时,父类的静态代码块会在子类的静态代码块之前执行。 - 每个类的静态...

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

    静态块(`static`)是在类定义中包含的一段特殊的代码块,它在类加载时执行,而不是在对象创建时执行。静态块常用于初始化静态变量或执行一次性的初始化操作。 ### 继承中构造函数与静态块的执行顺序 在Java中,当...

    Java面向对象(高级)- 类的成员之四:代码块

    Java面向对象编程中的类成员之一是代码块,这部分内容主要探讨了Java中代码块的概念、分类、用途以及执行时机。代码块在Java中扮演着初始化类或对象成员变量的角色,特别是在需要复杂计算或获取外部信息来设定初始值...

    继承与static精选例题

    1. **初始化阶段**:首先执行的是类`X`中的`static`代码块,输出"tttt"。这是因为`static`代码块会在类加载时执行,而类加载是先于任何对象创建的。 2. **创建Z实例**:之后执行`main()`方法,在`main()`方法中...

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

    在多级继承关系中,静态代码块按照类的加载顺序执行,先加载的类先执行其静态代码块。 例如,在给定的代码中: ```java public class A { static { System.out.print(1); } public A() { System.out.print(2)...

    举例说明Java中代码块的执行顺序

    1. 当创建一个类的实例时,首先会执行类中的静态属性和静态代码块,按照它们在代码中出现的顺序进行。 2. 然后执行非静态属性和非静态代码块。 3. 最后,调用构造函数来完成对象的初始化。 在没有继承关系的情况下...

    java中final和static的区别

    static 语句块,可以有多个,位置可以随意放,它不在任何的方法体内,JVM 加载类时会执行这些静态代码块,是该类中最先被执行的代码,如果有多个静态代码块,会按照它们在类中出现的先后顺序执行它们,每个静态代码...

    Java程序设计实验11-static、super、final、代码块.docx

    Java程序设计实验11主要关注四个核心概念:`static`、`super`、`final`以及代码块。这些是Java编程中的基础但至关重要的元素,理解它们有助于编写更有效、更具可维护性的代码。 1. **`static`关键字**: - `static...

    java 静态块实例块构造器调用

    实例块是类中不包含`static`关键字的代码块,它在创建类的新实例时执行,用于初始化实例变量。每次创建类的新实例时,都会执行实例块。 ```java public class Parent { { System.out.println("Parent instance ...

    类继承的初始化顺序类,继承的初始化顺序

    本篇文章将围绕“类继承的初始化顺序”这一主题展开,详细解析初始化过程中涉及的关键概念和技术细节。 ### 类继承的初始化顺序概述 在面向对象语言中(如Java、C#等),当创建一个继承自某个基类的子类对象时,会...

    实例解析JAVA中代码的加载顺序

    static代码块的加载时间是在类加载时执行的,而不是在实例化对象时执行的。 继承类中构造器的隐式调用 在上面的例子中,SubClass的构造器中会隐式的调用父类的构造器。这是因为在Java中,子类的构造器会隐式的调用...

    java中final与static的用法

    在Java编程语言中,`final`与`static`是两个非常关键且常用的关键字,它们各自具有独特的功能和用途,可以极大地增强代码的稳定性和可维护性。下面将详细解析这两个关键字的用法及其在Java中的重要性。 ### 一、`...

    java中的静态代码块、构造代码块、构造方法详解

    在Java编程语言中,类的初始化过程涉及到几个关键的概念,包括静态代码块、构造代码块和构造方法。这些概念在创建对象和管理类的状态时起着至关重要的作用。以下是关于这三个概念的详细解释: 1. **静态代码块**: ...

    JAVA程序:静态块代码

    同时,如果类之间存在继承关系,子类的静态块会在父类的静态块之后执行。 总之,静态块是Java中一个重要的概念,它提供了一种在类加载时初始化静态变量的机制,常用于设置全局配置或进行一次性操作。正确理解和使用...

    java中类的初始化顺序

    本文将详细探讨Java中类的初始化过程及其顺序,并通过具体的代码示例来帮助理解这一过程。 #### 二、基础知识 1. **静态成员变量(Static Fields)**:在类加载时初始化。 2. **实例成员变量(Instance Fields)**...

    JAVA面试题解惑系列

    因此,静态变量和静态初始化块的具体初始化顺序取决于它们在代码中的相对位置。 #### 总结 通过对Java中类初始化顺序的学习,我们不仅可以更好地理解Java语言的基本概念,还能够在编写代码时避免一些常见的错误。...

Global site tag (gtag.js) - Google Analytics