`
stone02111
  • 浏览: 215183 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Java继承构造执行顺序

    博客分类:
  • Java
 
阅读更多

 

package test;

public class Father {
	static{
		System.out.println("I am Father");
	}

	public Father() {
		super();
		System.out.println("Father Create");
	}
	

}

 

package test;

public class Son extends Father{
	
	static{
		System.out.println("I am Son");
	}

	public Son() {
		super();
		System.out.println("Son Create");
	}
	
	public Son(int s) {
		super();
		System.out.println("Son Create with param: int");
	}
	
	public static void main(String[] args) {
		Son s = new Son();
	}

}

 

 

package test;

public class GrandChild extends Son {
	
	static{
		System.out.println("I am GrandChild");
	}
	
	


	public GrandChild() {
		super();
		System.out.println("GrandChild Create");
	}




	public GrandChild(int s) {
		super(s);
		System.out.println("GrandChild Create with param: int");
	}

	public GrandChild(long s) {
		this((int)s);
		System.out.println("GrandChild Create with param: long");
	}


	public static void main(String[] args) {
		GrandChild gc = new GrandChild(3l);

	}

}

 

 

运行以下代码

	public static void main(String[] args) {
		GrandChild gc = new GrandChild();

	}

 结果为:

I am Father
I am Son
I am GrandChild
Father Create
Son Create
GrandChild Create

 运行以下代码

	public static void main(String[] args) {
		GrandChild gc = new GrandChild(3);

	}

 结果为

I am Father
I am Son
I am GrandChild
Father Create
Son Create with param: int
GrandChild Create with param: int

 运行以下代码

	public static void main(String[] args) {
		GrandChild gc = new GrandChild(3L);

	}

 结果为:

I am Father
I am Son
I am GrandChild
Father Create
Son Create with param: int
GrandChild Create with param: int
GrandChild Create with param: long

 

以上:

 

1 类中的静态对象先于static{}执行

2  static{}中的代码是在构建类对象之前执行的

3 构造子类的时候是按照先父后子的顺序执行的

4 如果在子的构造函数中并没有使用显式的调用父类的构造函数(使用super),则执行无参构造函数。

5 如果使用this(),则会先调用this(),再调用下面的代码(此时父类别的默认构造函数不再执行,而会根据执行this()执行相应的父构造函数)

分享到:
评论

相关推荐

    Java类继承初始化顺序

    当我们谈论“Java类继承初始化顺序”时,涉及到的关键知识点包括构造器、成员变量的初始化、super关键字以及方法的覆盖。 首先,了解类初始化的顺序至关重要。当创建一个子类实例时,初始化过程遵循以下步骤: 1. ...

    Java类的完整构造执行顺序

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

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

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

    java 继承关系的加载顺序

    在Java编程语言中,继承是面向对象特性的重要组成部分,它允许一个类(子类)从另一个类(父类)继承属性和方法。了解Java中继承关系的加载顺序对于理解和优化程序性能至关重要。以下是对这个主题的详细阐述: 1. ...

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

    在探讨继承中子类与父类构造函数及静态块的执行顺序时,我们首先需要理解构造函数和静态块的基本概念及其在Java中的作用。构造函数主要用于初始化对象的状态,而静态块则是在类加载到内存中时执行的一段代码,通常...

    Java继承习题

    ### Java继承习题知识点解析 #### 一、基础概念与选择题分析 1. **final修饰的方法** - **题目**: 若在某一个类定义中定义有如下的方法:`final void workDial()`该方法属于 - A. 本地方法 - B. 最终方法 - C....

    Java类的基本运行顺序

    本文将通过具体的代码示例,详细解析Java类的基本运行顺序,帮助开发者更好地掌握程序执行逻辑,从而提高编程效率。 #### 示例一:简单类的运行顺序 考虑以下Java类`Test`: ```java public class Test { ...

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

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

    详解 Java继承关系下的构造方法调用

    Java继承关系下的构造方法调用详解 Java继承关系下的构造方法调用是Java语言中一个非常重要的概念,它关系到类的继承和对象的实例化。在Java中,创建一个类的对象时,如果该类存在父类,则先调用父类的构造方法,...

    构造函数继承.关于java

    2. **构造函数调用顺序**:在子类构造函数中,必须先调用父类的构造函数(使用`super`),然后再执行子类构造函数中的其他代码。 3. **构造函数的可访问性**:子类只能访问具有相同或更宽松访问级别的父类构造函数。...

    java程序初始化顺序

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

    java继承与多态教学及练习

    1继承的概念 2继承的实现 3变量隐藏与方法覆盖 4super关键字 5 子类的构造顺序 6Object类 7 final关键字

    Java 接口与继承

    5. 创建子类对象时,会按照一定的顺序进行初始化:首先是默认初始化,然后绑定构造方法参数,接着调用父类构造函数,最后执行实例变量的显性初始化和构造方法的主体代码。 接口在Java中是一种完全抽象的类,它只...

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

    ### Java中的继承(子类调用父类构造方法) #### 一、继承的基本概念 Java是一种支持面向对象编程的语言,其中“继承”是一项核心特性。继承允许创建一个新的类(称为子类或派生类),该类继承了现有类(称为父类...

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

    即使如此,父类的构造方法和静态块仍然会按顺序执行,因为这是继承的固有特性。 总结一下,Java中子类继承父类时的程序运行顺序是: 1. 父类的静态变量和静态块 2. 子类的静态变量和静态块 3. 父类的非静态代码块 ...

    java 构造方法的资源

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

    java构造方法

    在类的继承结构中,构造方法的调用顺序遵循自底向上的原则,即从最底层的子类开始,逐级向上调用父类的构造方法,直到到达最顶层的基类(通常是`Object`类)为止。这一过程确保了所有层次上的初始化逻辑都被正确执行...

    Java构造函数的继承问题[收集].pdf

    理解这些概念对于编写正确的Java继承代码至关重要。确保在设计类结构时,考虑好如何初始化对象,以及子类如何利用父类的构造函数来完成初始化过程。合理使用`super`关键字可以有效地控制对象的构建流程,避免可能...

    JAVA继承_接口_抽象类等练习.doc

    构造函数的执行顺序 **概念:** 当子类创建对象时,会首先执行父类的构造函数,然后再执行子类的构造函数。这是为了确保父类的初始化逻辑能够先于子类执行。 **选择题示例:** 第13题中,正确答案是A选项:“Father...

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

    在面向对象语言中(如Java、C#等),当创建一个继承自某个基类的子类对象时,会有一个特定的初始化顺序。这个顺序通常遵循以下步骤: 1. **基类静态成员初始化**:如果基类中有任何静态成员,则会在程序启动时按照...

Global site tag (gtag.js) - Google Analytics