`
houzx910
  • 浏览: 1382 次
文章分类
社区版块
存档分类
最新评论

java中构造方法的执行过程

    博客分类:
  • java
阅读更多
java中构造一个类实例,就要首先构造它的父类,因为子类是由父类派生而来,只有有了父类才可能有子类.而对于类本身的构造过程中,是要首先按顺序来对它的成员变量进行初始化,然后再调用其构造方法.
    所以 java中构造一个类的整个过程可以理解为:如果有父类 先 1构造父类 然后构造本类 2本类成员变量初始化 3调用本类构造方法

    实际上在每个类(除Object外)的构造造方法中都要执行super()方法,默认的情况下系统会自动为构造方法最前面加上super()这条语句,我们可以显示的写出来,并且也可为其加上参数,前提是父类有相对应的构造方法.前面说的构造本类之前要构造父类就是这条语句的作用.
    成员变量的初始化过程是在super()语句后面其它方法体前面执行的
    如果某个类的父类有多个构造方法时 子类就可以用不同的参数调用父类中相对应的构造方法来构造父类
    如果加上自由块 和静态的自由块 执行的顺序为:
        父类的静态自由块,父类的静态成员变量被初始化
        子类的静态自由块,子类的静态成员变量被初始化
        父类的自由块,父类的成员变量被初始化
        父类的构造方法
        子类的自由块,子类的成员变量被初始化
        子类的构造方法
    自由块和成员变量是等同的优先级被初始化的
例:
public class E {
public static void main(String[] args) {
  new B();
}
}
class A {
{
  System.out.println("父类A的自由块");
}
A() {
  System.out.println("父类A的构造方法\n");
}
D d = new D("父类A的成员变量被初始化\n");
static {
  System.out.println("父类A的静态自由块");
}
static D dd = new D("父类A的静态成员变量被初始化\n");
}
class B extends A {
static D ddd = new D("子类B的静态成员变量被初始化");
static {
  System.out.println("子类B的静态自由块\n");
}
D dddd = new D("子类B的成员变量被初始化");
B() {
  super();
  System.out.println("子类B的构造方法");
}
{
  System.out.println("子类B的自由块\n");
}
}
class D {
D(String str) {
  System.out.println(str);
}
}

转至:http://blog.sina.com.cn/s/blog_55d3e64f0100au1g.html
分享到:
评论

相关推荐

    构造方法JAVA构造方法

    Java构造方法是面向对象编程中的一个关键概念,用于初始化新创建的对象。在Java类中,构造方法是一个特殊的方法,它的名字必须与类名完全相同,没有返回类型,甚至不包括void关键字。当我们创建一个类的新实例时,...

    java构造方法

    ### Java构造方法详解 #### 一、构造方法基础概念 构造方法是Java中一种特殊的方法,主要用于初始化新创建的对象。每个类至少有一个构造方法。如果程序员没有显式地定义构造方法,Java编译器会自动为类添加一个无...

    Java中构造方法的特点.pdf

    Java中的构造方法是类的重要组成部分,它在对象创建过程中扮演着关键角色,主要负责对象的初始化。构造方法具有以下几个显著特点: 1. **与类名相同**:构造方法的方法名必须与类的名称完全一致。例如,如果有一个...

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

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

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

    在Java编程语言中,面试和笔试常常涉及到对...总之,掌握这些Java基础知识不仅可以帮助你在面试中脱颖而出,也能使你在实际开发过程中编写出更加高效、健壮的代码。持续学习和实践,是成为优秀Java开发者的必经之路。

    Java中的构造方法分析.pdf

    如果类中没有显式定义构造方法,Java编译器会为类提供一个默认的无参构造方法,该方法不执行任何操作。但是,一旦开发者自定义了构造方法,编译器将不再提供默认构造器。 构造方法可以有参数,这样就可以在创建对象...

    Java构造方法解析.zip

    Java构造方法解析 ...总结起来,Java构造方法是初始化类实例的关键工具,它们允许我们在创建对象时定制初始化过程,确保对象的正确状态。理解并熟练运用构造方法及其特性对于编写高效、可维护的Java代码至关重要。

    Java构造方法解析.pdf

    下面详细解析Java构造方法的特性和使用方法。 构造方法的特性: 1. 方法名与类名相同:构造方法的名字必须与类名完全相同,这是Java语法规定的一部分,便于编译器识别并自动调用构造方法。 2. 构造方法无返回类型:...

    浅谈Java程序中的构造方法调用.pdf

    当一个子类继承父类时,子类的构造过程中必须调用父类的构造方法。特别是当子类没有定义构造方法时,系统自动调用父类的无参构造方法。例如,有以下定义: ```java class Father { public Father() {} // 无参构造...

    Java零基础-构造方法.md

    在这个过程中,构造方法被自动调用,负责完成对象状态的初始化工作。 #### 总结 通过本文的学习,读者应能深刻理解Java中构造方法的作用和使用方式,掌握构造方法与普通方法的区别,学会如何定义带参构造方法来...

    Java面向对象程序设计构造方法.pptx

    Java面向对象程序设计中的构造方法在农业信息系统开发中扮演着重要的角色。在系统开发过程中,构建数据模型并初始化对象是核心任务之一。构造方法就是为此而设计的特殊方法,它在创建类的实例时自动调用,用于设置新...

    Java使用this关键字调用本类中的重载构造方法.pdf

    重载构造方法是Java允许在同一类中定义多个具有相同名称但参数列表不同的构造方法。这样做的好处是可以根据不同的初始化需求提供多种构造选项。例如,一个日期类可能有只接受月份和日期的构造方法,也可能有接受完整...

    JAVA技术专题综述之构造方法篇

    在创建对象的过程中,构造方法的调用顺序是非常重要的。不仅涉及到类本身的构造方法,还包括成员变量的初始化顺序。 **示例3**:对象初始化顺序分析。 ```java class One { One(String str) { System.out....

    深入剖析java类的构造方式

    3. 如果在构造方法中存在 `this()` 调用(可能是带有参数的形式),那么会执行相应的构造方法,然后跳转到步骤6继续执行。如果没有 `this` 调用,则继续下一步。 4. 执行显式或隐式的 `super()` 调用。这将触发父类...

    java实例化对象的过程

    在Java编程语言中,实例化对象是创建类的实例,使其具有...总的来说,Java实例化对象是编程中的基本操作,它涉及到类的构造,内存分配,方法调用等多个核心概念。理解这一过程对于深入学习Java和面向对象编程至关重要。

    跟踪Java执行过程的方法.docx

    在Java开发过程中,理解和跟踪代码执行过程至关重要,尤其是在处理复杂逻辑或排查问题时。本文将介绍五种跟踪Java执行过程的方法,以及一个与之相关的Java库——Apache POI,用于创建Excel文件。 1. **基本方法:...

    java 初始化与方法

    Java初始化与方法是Java编程语言中的核心概念,它们在程序执行过程中起着至关重要的作用。本文将深入探讨Java中的初始化过程、方法的定义与调用,以及与之相关的源码和工具应用。 首先,让我们从类的初始化开始。在...

    Java入门理解构造器

    在Java中,构造器(Constructor)是一种特殊的方法,主要用于初始化对象。构造器的名字必须与类名相同,并且没有返回类型,甚至连`void`也不可以有。构造器的主要任务是在创建对象时为对象分配内存并初始化成员变量...

    Java虚拟机解释执行机制研究.pdf

    研究Java虚拟机的解释执行机制,不仅有助于深入理解Java程序的执行过程,也为计算机研究人员和从业者提供了底层技术研究的契机。这有助于他们更好地掌握计算机技术,以及更高效地利用计算机工具进行软件开发。

    一种基于UML关系的Java代码库构造方法.zip

    在软件开发过程中,UML(统一建模语言)是一种强大的工具,用于可视化、构建和文档化软件系统的结构和行为。本资源"一种基于UML关系的Java代码库构造方法"探讨了如何利用UML的关系来指导Java代码的生成,从而构建...

Global site tag (gtag.js) - Google Analytics