`
luzl
  • 浏览: 572149 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

Java 继承情况下实例变量的初始化

阅读更多
package scjp;

class X  
{ 
    Y b = new Y(); 
    X()  
    {  
        System.out.print("X");  
    } 
} 
class Y  
{ 
    Y()  
    {  
        System.out.print("Y");  
    } 
} 

public class Demo65 extends X{

	Y  y = new Y();
	
	Demo65()  
    {  
        System.out.print("Z");  
    } 
    
    public static void main(String[] args)  
    { 
    	System.out.println("Begin");
        new Demo65(); 
    } 
}



执行结果:YXYZ

分析:
1. new Demo65();
  1.2. Demo65的超类是X,所以 new X()
    1.2.1 X没有超类所以直接实例化X成员变量 Y y=new Y() console打印 Y
    1.2.2 然后执行X的构造函数 cosole打印X
  1.3 实例化Demo65的成员变量 Y y=new Y() cosole 打印 Y
  1.4 执行构造函数 打印 Y

总结: 实例化一个类首先实例化它继承的类,然后初始化它的变量,然后执行构造函数内容.
 
分享到:
评论

相关推荐

    Java类继承初始化顺序

    4. **子类成员变量初始化**:最后,执行子类的非静态成员变量初始化。 在实际编程中,`super`关键字用于引用父类的成员。例如,`super.someMethod()`调用父类的`someMethod()`方法,`super.someVariable`访问父类的...

    探究java的ClassLoader及类变量初始化顺序

    理解ClassLoader的工作机制以及类变量初始化的顺序对于深入理解Java运行时环境至关重要。这篇博文将探讨这两个主题。 首先,让我们深入了解Java的ClassLoader。ClassLoader是一个抽象类,它是Java中的一个关键组件...

    java继承类实例

    在这个特定的程序中,我们看到了一个关于Java继承的实例,它演示了子类对象初始化时涉及的各个步骤,包括构造方法、初始化值、父类构造方法以及父类的初始化值。 首先,我们有一个名为`Parent`的父类,它有两个实例...

    java代码的初始化顺序demo

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

    java程序初始化顺序

    - 实例初始化块({}):然后执行类中的实例初始化块,这些代码会为实例变量赋值或执行其他初始化任务。 - 构造器主体:最后,执行当前类的构造器主体,完成对象的具体初始化。 4. **多线程下的初始化**: - 当多...

    Java类继承关系中的初始化顺序实例详解

    例如,在上面的代码中,我们可以看到,父类的静态成员变量的初始化是在子类的静态成员变量初始化之前的,而子类的普通成员变量的初始化是在父类的普通成员变量初始化之后的。 Java类继承关系中的初始化顺序是非常...

    java中类的初始化顺序

    // 实例成员变量初始化 public static TestB b = new TestB(); public static void main(String[] args) { new TestOrder(); } } class TestA { public TestA() { System.out.println("Test--A"); } } ...

    java面试题-类的初始化顺序.doc

    这个顺序表明,无论类之间的继承关系如何,初始化顺序始终是:静态变量和静态初始化块先于非静态成员。在创建对象时,父类的初始化先于子类。这是Java语言规范所规定的,确保在子类访问父类的静态或非静态成员时,...

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

    4. **子类非静态成员初始化**:接着是子类的非静态成员变量初始化。 5. **基类构造函数调用**:通过`super()`调用基类的构造函数。 6. **子类构造函数调用**:最后执行子类自身的构造函数。 ### 初始化过程详解 ##...

    JAVA面试题解惑系列(一)——类的初始化顺序-JAVA程序员JAVA工程师面试必看.pdf

    2. **实例变量和初始化块**:当创建子类对象时,先执行父类的实例变量初始化和初始化块,接着执行子类的实例变量初始化和初始化块。这是因为在创建子类对象时,首先会创建父类的部分,然后再创建子类的部分。 3. **...

    java学习之神奇初始化

    4. **实例变量的显式初始化**:在构造器调用之前,会按照声明顺序初始化实例变量。 5. **构造器中的初始化**:构造器中定义的初始化逻辑。 6. **非静态初始化块**:位于类体中的非静态初始化块按照它们出现的顺序被...

    JAVA面试题解惑系列——类的初始化顺序

    在Java中,类的初始化顺序是面试中的经典问题之一,它涉及到继承、静态成员以及实例成员等多个方面。正确理解类的初始化顺序对于编写正确、高效的代码至关重要。 首先,需要了解Java类初始化的基本规则,即在类的...

    Java4Android 19_子类实例化过程

    2) 构造器的执行顺序和实例变量初始化的顺序;3) 访问修饰符对构造器调用的影响;4) 构造器链的形成。理解这些知识点对于编写高效、安全的Java代码至关重要。在实际开发中,合理利用继承和构造器,可以提高代码的可...

    JAVA面试题解惑系列类的初始化顺序JAVA程序员JAVA工程师面试必看.pdf

    本篇文章将深入解析类初始化的顺序以及在继承情况下的表现。 首先,我们需要明确类初始化顺序的基本规则: 1. **静态变量和静态初始化块**:首先执行的是类的静态部分,包括静态变量的初始化和静态初始化块。这些...

    Java中的成员变量

    此外,可以使用`this`关键字来引用当前对象的实例变量,虽然在大多数情况下,这并不是必需的。 2. 静态变量(类变量) 静态变量由static关键字修饰,它们属于类本身,而非类的实例。这意味着,不论创建多少个对象,...

    Java关于含有继承类的成员初始化过程讲解

    继承类的成员初始化过程可以分为三个阶段:加载阶段、静态成员变量初始化阶段和对象创建阶段。 加载阶段:在加载阶段,Java虚拟机(JVM)将加载编译好的类文件到内存中。在这个阶段,JVM会识别基类和导出类的关系,...

    详解Java中的实例初始化块(IIB)

    实例初始化块(IIB)是 Java 语言中的一种初始化机制,用于初始化实例变量。它的语法结构是使用大括号 {} 扩起来的代码,通常放在构造函数之前。实例初始化块在初始化类的一个实例时执行,而且在构造函数之前执行。...

    JAVA面试题解惑系列(一)——类的初始化顺序-JAVA程序员JAVA工程师面试必看.pdf,这是一份不错的文件

    在 JAVA 中,类的初始化顺序可以分为四个阶段:静态变量、静态初始化块、变量、初始化块和构造器。其中,静态变量和静态初始化块的初始化顺序是最高的,接着是变量和初始化块,最后是构造器。 在了解类的初始化顺序...

Global site tag (gtag.js) - Google Analytics