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

静态属性和静态块在子类和父类中的执行顺序

 
阅读更多

1.子类test1

 

public class Test1 extends Test2
{
    private static final class Factory
    {
      //在main方法执行Test1.factory()的时候调用下面这个属性的初始化
        public static final Test1 INSTANCE = new Test1();
     }

    private static String dd = "aaa"; //第三步执行

    private static final Test1 tt = new Test1();//第四步执行

    static
    {
        System.out.println("static 2");   //第五步执行
    }

    public static void main(String[] args)
    {
        Test1.factory();
    }

    public static Test1 factory()
    {
        return Factory.INSTANCE;
    }
}

  父类 test2

public class Test2
{
    private static final Test2 tt2 = new Test2();  //第一步执行

    static
    {
        System.out.println("static t2");   //第二步执行
    }
    public Test2()
    {
        System.out.println("Test2");
    }
}

 

 

在执行test1的main方法时,加载静态属性的顺序

分享到:
评论

相关推荐

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

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

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

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

    javase子类父类继承关系图解

    在Java编程语言中,继承是面向对象特性的重要组成部分,它允许子类继承父类的属性和方法,从而实现代码的重用与扩展。标题“javase子类父类继承关系图解”指的是对这一概念的可视化展示,帮助初学者更好地理解Java中...

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

    这个过程确保了对象在被创建之前,其类的静态属性和父类的静态属性已经被正确初始化。同时,通过构造方法链确保了父类的状态在子类状态之前完成初始化。 在实际面试或笔试中,理解这些基本概念并能够熟练运用是非常...

    java 静态块实例块构造器调用

    Java编程语言中,类的初始化...在上述示例中,我们可以看到静态块和实例块的执行顺序,以及如何在继承链中传递这个顺序。理解这些概念有助于我们编写更加高效和可靠的Java代码,特别是在处理类的初始化和继承关系时。

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

    在Java编程语言中,子类继承父类是一种常见的面向对象特性,它允许子类获取父类的属性和方法,并且可以进行扩展或覆盖。本文将深入分析Java中子类继承父类时的程序运行顺序,这对于理解面向对象编程的执行机制至关...

    举例说明Java中代码块的执行顺序

    1. 当创建一个类的实例时,首先会执行类中的静态属性和静态代码块,按照它们在代码中出现的顺序进行。 2. 然后执行非静态属性和非静态代码块。 3. 最后,调用构造函数来完成对象的初始化。 在没有继承关系的情况下...

    Java 普通代码块静态代码块执行顺序(实例讲解)

    1. **静态代码块执行**:首先是类的静态部分,因此`ClassA`和`B`的静态代码块会按照它们在代码中出现的顺序依次执行。在这个例子中,我们首先看到"静态代码块B",然后是"静态代码块A",因为`B`类在`ClassA`类之前...

    对象初始化流程梳理对象初始化流程梳理

    在`Person`类中,非静态块和非静态属性`b1`、`b2`会按照它们在类中的顺序执行,然后调用父类构造器`Person()`。 4. **构造器**: - **父类构造器**:父类构造器负责设置父类的非静态属性的初始值,如`Person`类的...

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

    4.知道了static的作用,那么X类被加载,那么就会先执行X类的静态属性和静态语句块(static),执行先后顺序看谁在前面就先执行谁。只在此时执行,以后都不会。 5.所以一个输出结果为tttt,没问题了吧。 6.X类的...

    讲义2继承多态.docx

    例如,在`Dog`类的例子中,`DogProfile`静态变量首先初始化,接着执行静态代码块,最后创建`Dog`对象时调用构造器并输出相应的信息。 **4. 多态** 多态分为方法重载(Overloading)和对象多态(Polymorphism): ...

    【Java】80例及结果

    在Beetle.java示例中,通过静态变量和静态初始化块演示了静态属性和静态代码块的初始化顺序。静态属性和静态代码块在类加载时就会进行初始化,并且按代码顺序依次执行。在Beetle类中,静态变量x1和x2的初始化顺序取...

    java 继承关系的加载顺序

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

    11 继承、super、重写(简化版).docx

    Java中的继承是面向对象编程(OOP)的核心特性之一,它允许一个类(子类)从另一个类(父类)继承特性,包括属性和方法。继承的目的在于提升代码的重用性、优化结构以及为多态提供基础。 ### 1. 继承 #### 1.1 什么...

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

    通过继承,子类可以复用(或继承)父类的方法和属性,同时也可以覆盖或扩展这些方法和属性。然而,在涉及到类继承时,一个重要的问题是类实例化时的初始化顺序。本篇文章将围绕“类继承的初始化顺序”这一主题展开,...

    Java面向对象程序设计-深入理解继承.pptx

    首先,继承允许一个类(子类)从另一个类(父类)中获取特性,这样子类就可以直接使用父类的属性和方法,而无需重复编写相同的代码。这种关系可以用"is-a"来描述,比如,"汽车"是一个"交通工具",那么"汽车"类就可以...

    JAVA面试题解惑系列

    - **静态初始化块**:也是在类加载时执行,其执行顺序同样遵循它们在类中出现的顺序。 - **非静态变量**:在对象创建时初始化。 - **非静态初始化块**:在对象创建时执行,其执行顺序同样遵循它们在类中出现的顺序。...

    java面试题

    在继承、多态、重载和重写的方面,继承是指一个类(子类)继承另一个类(父类)的属性和方法,使得子类具有父类的所有行为和属性。多态是指允许不同类的对象对同一消息做出响应,即同一操作作用于不同的对象,可以有...

    ‘’JAVA面试题解惑系列.doc

    在这个例子中,我们可以看到,尽管父类的实例初始化和构造器在子类的实例变量和初始化块之前执行,但子类的静态变量和静态初始化块是在父类的非静态部分之前初始化的。 关于静态变量和静态初始化块,以及实例变量和...

    Java面试题解惑系列

    子类会继承父类的属性和方法,在子类对象创建过程中也会涉及父类的初始化。 考虑以下示例: ```java class Parent { // 静态变量 public static String p_StaticField = "父类--静态变量"; // 变量 public ...

Global site tag (gtag.js) - Google Analytics