`
yanguz123
  • 浏览: 567688 次
  • 性别: 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 static静态初始快

    5. **继承关系**:子类会继承父类的静态初始化块,但不会重复执行。父类的静态初始化块只在父类加载时执行一次。 6. **使用场景**:常用于设置静态变量的初始值,创建静态对象,或者执行一次性的系统设置操作。 在...

Global site tag (gtag.js) - Google Analytics