`
hellsing42
  • 浏览: 263679 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于构造函数和继承的加载顺序问题

 
阅读更多
class   X   {   
  Y   b   =   new   Y();   
        X()   {     
  System.out.print("X");     
  }   
  }   
  class   Y   {   
          Y()   {     
  System.out.print("Y");     
  }   
  }     
  public   class   Z   extends   X   {   
              Y   y   =   new   Y();   
                Z()   {     
  System.out.print("Z");     
  }   
                public   static   void   main(String[]   args)   {   
                          new   Z();   
                }   
  }   

  为什么输出的是YXYZ啊?
根据结果的解释是:  
    new   Z()时创建class   Z的对象,从变量的声明开始一步步执行了   new   Y()  
  输出Y了;然后执行Z()构造函数,由于Z是从X继承而来的,所以执行X()  
  的构造函数,输出X,再进行变量的声明,输出Y了,最后构造Z()输出Z  
   
 
分享到:
评论

相关推荐

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

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

    C#中构造函数和析构函数的用法

    ### C#中构造函数和析构函数的深入解析 #### 构造函数与析构函数:C#中的生命期管理 在C#编程语言中,构造函数和析构函数是对象生命周期管理的关键部分,它们分别负责对象的初始化和清理工作。理解这两者的运作...

    14_构造函数 视频

    3. **构造函数重载**:一个类可以有多个构造函数,只要它们的参数列表不同(参数个数、类型或顺序),这就是构造函数的重载。这样可以根据需要提供多种初始化方式。 4. **构造函数的调用**:当使用`new`关键字创建...

    构造析构的顺序

    在C++编程中,构造函数和析构函数是类对象生命周期中的两个重要阶段。了解它们的执行顺序对于编写高效、安全的代码至关重要。本章节主要探讨了构造和析构的顺序,以及它们如何影响对象成员的初始化和清理。 首先,...

    详解java中继承关系类加载顺序问题

    Java继承关系类加载顺序问题详解 在Java中,类加载顺序问题是开发中经常遇到的问题之一。今天,我们来详解Java中继承关系类加载顺序...在开发中,我们需要遵守Java中的类加载顺序规则,以避免可能出现的错误和问题。

    Java类的完整构造执行顺序

    在深入探讨Java类的完整构造执行顺序之前,我们先来明确一下Java中构造函数与类初始化的基本概念。构造函数在创建对象时被调用,用于初始化该对象的状态。而类初始化则是指在类首次被使用时,JVM执行的一系列初始化...

    TareaPOO-构造函数CristianPonce

    当我们谈论"TareaPOO-构造函数CristianPonce"时,我们可以推测这可能是一个关于面向对象编程(Object-Oriented Programming, OOP)的作业或项目,其中涉及了Java中的构造函数概念。在这个项目中,Cristian Ponce可能...

    C高级编程学习总结电脑资料.doc

    在这种情况下,必须确保静态构造函数的执行顺序正确,避免出现循环依赖的问题。 在上述例子中,x的值依赖于y的值(x=0+1=1),而y的值依赖于x的值(y=x+1=2)。由于静态构造函数的执行只进行一次,并且在类加载时就...

    继承与static精选例题

    2. **继承关系中的构造函数执行顺序**:在创建子类对象时,会先执行父类的构造函数,然后再执行子类自己的构造函数。如果父类构造函数中有初始化其他类对象的操作,则会先执行这些对象的构造函数。 3. **构造函数与...

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

    本文将深入探讨在继承中的程序执行顺序,以及子类与父类的执行顺序问题。 首先,我们需要了解Java或Python等面向对象语言中类的构造过程。当一个类实例化时,其构造函数(在Java中是`构造器`,在Python中是`__init_...

    【Java】80例及结果

    从提供的【部分内容】中,我们可以提炼出Java语言中面向对象编程的几个核心概念,包括类的继承、构造函数的执行顺序、静态属性的初始化顺序、以及变量的作用域等方面的知识点。以下是详细解释: 1. 类的继承与构造...

    Java中类的加载顺序剖析(常用于面试题)

    Java中的类加载顺序是编程面试中常见的问题,它涉及到Java虚拟机(JVM)的工作机制。下面我们将详细探讨这个问题,并基于提供的代码实例进行解析。 首先,我们了解类加载的基本顺序: 1. **静态变量和静态初始化块...

    web前端面试题.pdf

    - **组合继承**:结合原型链和构造函数继承,但会出现两次调用父类型构造函数的问题。 - **原型式继承**:使用`Object.create()`方法,通过创建新对象并设置其原型为另一个对象来实现继承。 - **寄生式继承**:...

    javase子类父类继承关系图解

    2. **父类的非静态初始化块**:接着,如果父类有非静态初始化块(也称为实例初始化块),它会在父类的构造函数执行之前运行。这些块用于初始化父类的实例变量。 3. **父类的默认构造器**:然后,调用父类的默认构造...

    Java中类的加载顺序

    不过我们可以换个直接的问法,如果类A和类B中有静态变量,静态语句块,非静态变量,非静态语句块,构造函数,静态方法,非静态方法,同时类A继承类B,请问当实例化A时,类内部的加载顺序是什么?  当时我也是一头...

    原生js延迟加载

    在JavaScript中,我们可以通过构造函数、原型和实例化来创建和操作对象。在这个延迟加载的场景中,面向对象编程可能涉及以下关键概念: 1. **构造函数**:用于初始化新创建的对象。在延迟加载的例子中,我们可以...

    java代码的初始化顺序demo

    总之,Java代码的初始化顺序是类加载的必然过程,涉及到静态和实例初始化块、构造函数、成员变量初始化以及继承关系的影响。这个demo是学习和理解这些概念的重要工具,通过实际操作可以加深对Java内存管理和对象生命...

    类和对象的初始化过程.zip

    总结,这个压缩包文件提供了关于Java中类和对象初始化的实例,包括静态和非静态成员的处理、继承、构造函数的调用顺序等。通过分析并运行这些代码,开发者可以更深入地理解Java的初始化机制。对于初学者来说,这是一...

    java对象的初始化顺序[参考].pdf

    对于`SuperClass`,它的成员变量`b1`和构造函数`SuperClass()`会被执行,接着是`SubClass`,同样的过程依次进行。 5. **实例化顺序**:在实例化过程中,成员变量首先被初始化,然后是成员函数(如果存在初始化函数...

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

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

Global site tag (gtag.js) - Google Analytics