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

Java子类构造的执行顺序

    博客分类:
  • Java
阅读更多

Java子类构造的完整执行顺序

 

package test;

public class Test {
	public static void main(String[] args) {
		new Son();
	}
	
	public static void print(String msg) {
		System.out.println(msg);
	}
	
	public static int getInt(String name) {
		print("static member " + name);
		return 0;
	}
	
	public static String getString(String name) {
		print("nonstatic member " + name);
		return "";
	}

	static class Parent {
		Parent() {
			print("constructor parent");
		}
		
		static {
			print("static block parent");
		}
		
		{
			print("nonstatic block parent");
		}
		
		String str = getString("parent");
		
		static int i = getInt("parent");
	}

	static class Son extends Parent {	
		Son() {
			print("constructor son");
		}
		
		static {
			print("static block son");
		}
		
		{
			print("nonstatic block son");
		}
		
		String str = getString("son");
		
		static int i = getInt("son");
	}
}


 

 最后输出结果为:

static block parent
static member parent
static block son
static member son
nonstatic block parent
nonstatic member parent
constructor parent
nonstatic block son
nonstatic member son
constructor son
 这个说明了Java类的执行顺序为:

父类的静态块--->父类的静态成员--->子类的静态块--->子类的静态成员--->父类的非静态块--->父类的非静态成员--->

父类的构造函数--->子类的非静态块--->子类的非静态成员--->子类的构造函数

0
0
分享到:
评论

相关推荐

    Java类的完整构造执行顺序

    遵循正确的构造顺序不仅有助于避免常见的编程陷阱,还能确保类和对象的正确初始化,从而提升程序的稳定性和性能。通过以上步骤的分析,我们可以更加深刻地认识到Java语言设计的严谨性和灵活性,同时也提醒我们在实际...

    java 静态非静态 字段方法 子类父类构造_初始化顺序!

    java 静态_非静态 字段_方法_代码块 子类父类构造_初始化顺序! 三个class 让你清清楚楚 第一个class java代码如下: package initialOrder; class Parent { // 静态变量 public static String p_StaticField...

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

    这是因为每个对象在创建时都需要先初始化其基类的部分,这通常意味着父类的构造函数会在子类构造函数之前调用。在Java中,如果子类没有显式地调用父类的构造函数,那么会默认调用父类的无参构造函数。 通过分析给定...

    java中的继承(子类调用父类构造方法还不懂).doc

    - **调用父类构造器**:最重要的是,`super`可以用于在子类构造器中调用父类的构造器。这对于初始化父类的状态非常有用。 - **追溯父类**:`super`不仅可以用于直接父类,还可以追溯到更远的祖先类。 **2. 调用父类...

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

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

    再次详细说明在继承中的程序执行顺序,子类与父类到底哪个先执行

    综上所述,程序执行顺序的基本原则是:首先初始化并执行父类的构造器、静态和实例初始化块,然后执行子类的构造器、实例初始化块。最后,当通过子类对象调用方法时,优先执行子类覆盖的方法。理解这一顺序对于编写可...

    java面试题静态加载顺序构造方法

    Java中的继承与静态static等的执行先后顺序的面试题 java面试题静态加载顺序构造方法 继承与static 面试题目如下:请写出程序执行完成之后的结果。 package extend; public class X { Y y=new Y(); ...

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

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

    java父类和子类初始化顺序的深入理解

    4. **父类的非静态实例初始化**:在调用子类构造器之前,父类的实例变量会被初始化。在这个例子中,`Art`类的构造器`Art()`被调用,打印出"Art"。注意,这是在`Cartoon`的构造器开始执行之前发生的,即使`Art`的构造...

    java程序初始化顺序

    在Java编程语言中,程序初始化的顺序是一个关键概念,它涉及到类加载、对象创建以及执行流程的安排。了解这些顺序对于编写高效、无错误的代码至关重要。以下是对Java程序初始化顺序的详细说明: 1. **类加载阶段**...

    JAVA程序执行顺序,你了解了吗.doc

    在JAVA编程语言中,程序的执行顺序是程序员需要掌握的关键概念之一,因为它直接影响到程序的行为。以下是关于JAVA程序执行顺序的详细解释: 1. **静态块**: 静态块是在类加载时执行的,它不依赖于类的实例。在...

    类执行顺序小结.doc

    Java类的执行顺序是理解Java程序行为的关键,它涉及类的加载、初始化以及构造过程中的各种细节。以下是对类执行顺序的深入解析,基于标题“类执行顺序小结”和描述“关于Java类的执行顺序详解”。 #### 一、类的...

    Java4Android 19_子类实例化过程

    其次,子类构造器的执行顺序。当一个子类对象被创建时,构造器的调用顺序是:首先执行父类的构造器,然后执行子类的构造器。这是因为初始化父类的状态是子类对象创建的前提。一旦父类构造器执行完毕,子类才能在其...

    java构造方法

    如果子类的构造方法没有明确调用父类的构造方法,那么Java会默认调用父类的无参构造方法。但如果父类中没有无参构造方法,或者需要在子类中传递特定参数到父类构造方法,则需要使用`super()`关键字显式调用父类的...

    java中子类继承父类,程序运行顺序的深入分析

    在例子中,"=========构造方法======== "(父类构造方法)和"=========子类构造方法======== "(子类构造方法)的顺序体现了这一点。 4. **对象操作**:一旦对象创建完成,就可以调用对象的方法。在示例中,"ts....

    Java类继承初始化顺序

    如果子类构造器没有显式调用父类构造器(使用`super()`),Java会默认添加`super()`调用到构造器的最开始。 4. **子类成员变量初始化**:最后,执行子类的非静态成员变量初始化。 在实际编程中,`super`关键字用于...

    EnumTest--构造顺序:父类、类成员变量、子类.zip

    3. **子类构造器**:最后,执行枚举类自身的构造器。在Java中,枚举的构造器默认是私有的,不能从外部直接实例化。枚举实例是在枚举声明中通过列举的方式创建的,例如`public enum Color { RED, GREEN, BLUE }`。...

    由浅入深详解Java 类的实例化顺序

    子类的静态变量和静态代码块,按代码先后顺序执行 3. 父类的成员变量和普通代码块,按代码先后顺序执行 4. 父类的构造方法 5. 子类的成员变量和普通代码块,按代码先后顺序执行 6. 子类的构造方法 其中,静态...

    java 构造方法的资源

    当一个类继承自另一个类时,子类的构造方法可以使用`super`关键字调用父类的构造方法,确保父类的状态得到正确初始化。例如: ```java public class Student extends Person { private String major; public ...

    “礼让”原则学习Java对象初始化顺序.pdf

    “礼让”原则是指在父类和子类的继承关系中,子类的实例化操作时,需要先调用父类的构造函数,然后再调用子类的构造函数。 三、Java 对象初始化顺序的实例分析 以下是一个示例代码,用于演示 Java 对象初始化顺序...

Global site tag (gtag.js) - Google Analytics