`

static块和构造函数的执行顺序

    博客分类:
  • J2SE
 
阅读更多
public class OrderTest {

    public static void main(String[] args) {
        /*
        * 结果:
             parent static block
            Child static block
            parent construct block
            Child construct block
        */
        new Child();
        /*
        * 
        * parent construct block
           Child construct block
        */
        new Child();
    }
}

class Parent {
    static {
        System.out.println("parent static block");
    }

    public Parent() {
        System.out.println("parent construct block");
    }
}

class Child extends Parent {
    static {
        System.out.println("Child static block");
    }

    public Child() {
        System.out.println("Child construct block");
    }
}

执行顺序

1 父类的静态代码块

2 子类的静态代码块

3 父类的构造方法

4 子类的构造方法
分享到:
评论

相关推荐

    static 用法

    (对于C++中的class对象例外, class的对象实例如果不初始化, 则会自动调用默认构造函数, 不管是否是static类型) 特点: static局部变量的”记忆性”与生存期的”全局性” 所谓”记忆性”是指在两次函数调用时, 在...

    Jave构造函数的继承执行顺序

    问题:子类继承父类,构造函数及公共属性的执行顺序是怎样的?  示例代码 <SPAN xss=removed>public class A extends C {  B b = new B();  static H h = new H();  static { ...

    java 基础 类对象创建实例化过程 实例解析

    * 继承树中的从最高层开始的实例语句块{}、然后对应的构造函数、以及构造函数中调用的方法 * (如果是重写即子类将父类的实例方法重写类,则调用子类的,如果是隐藏即方法则父类中声明为静态方法,则调用父类本身的...

    学习C#静态函数及变量的一个精典例子与代码

    (1)用于对静态字段、只读字段等的初始化。 (2)添加static关键字,不能添加访问修饰符,因为静态构造...任何带有初始值设定项的静态字段,则在执行该类的静态构造函数时,先要按照文本顺序执行那些初始值设定项。 

    C++实验源代码

    1) 下面是“平面上点”类的定义: class CPoint { private: int x, y; static int nCount; // nCount用于保存点的个数 public: CPoint(int px=0, int py=0);...并在该类中观察构造函数的执行顺序。(选做)

    C++实验报告

    C++实验报告,为最终版本 1) 下面是“平面上点”类的定义: class CPoint { private: int x, y; static int nCount; // nCount用于保存点的个数 ...并在该类中观察构造函数的执行顺序。(选做)

    Java初始化顺序

    1 无继承情况下的Java初始化顺序: class Sample { Sample(String s) { System.out.println(s); } Sample() { System.out.println(Sample默认构造... System.out.println(static块执行); if(sam==null)Sy

    C++大学教程,一本适合初学者的入门教材(part2)

    9.9 在派生类中使用构造函数和析构函数 9.10 将派生类对象隐式转换为基类对象 9.11 关于继承的软件工程 9.12 复合与继承的比较 9.13 对象的“使用”关系和“知道”关系 9.14 实例研究:类Point、CircIe和...

    C++大学教程,一本适合初学者的入门教材(part1)

    9.9 在派生类中使用构造函数和析构函数 9.10 将派生类对象隐式转换为基类对象 9.11 关于继承的软件工程 9.12 复合与继承的比较 9.13 对象的“使用”关系和“知道”关系 9.14 实例研究:类Point、CircIe和...

    javacore:java核心 运算符,控制语句,函数,异常,集合,线程,数组,IO流,网路编程,设计模式,java8,面试相关

    Java基础 java控制流程语句 数据交换 左(右)移 加密 java控制流程语句 switch语句 季节判断 while循环 1+...+100 do while循环 ...jvm类加载顺序决定代码执行顺序 super关键字 方法重写 instanceof关键字 fi

    C++复习资料之系列

    执行下面语句后,a和b的值分别为( b )。 int a = 5,b = 3,t; int &ra = a; int &rb = b; t = ra;ra = rb;rb = t; (a) 3和3 (b) 3和5 (c) 5和3 (d) 5和5 18. 在下列运算符中,( d )优先级最高...

    java面试800题

    构造函数是和类同名的函数,没有返回类型,构造函数不能在普通的程序里面调用,只有当这个类被应用new实例化的时候才会被运行。构造函数没有返回类型,实际上,构造函数返回的就是这个class本身。 类初始化时构造函数...

    传智播客扫地僧视频讲义源码

    04_构造函数的调用(无参数和有参构造)_传智扫地僧 05_课堂答疑对象的初始化和对象的赋值是两个不同的概念 06_为什么需要构造和析构函数 07_copy构造函数的调用时机1和2 08_课堂答疑 09_copy构造函数调用时机3_传智...

    java自学之道

    4.4 构造函数被调用后的详细执行过程 5、包 5.1 创建包 5.2 创建可复用类的步骤简要说明 5.3 包的导入 5.4 包的可见性 接口 6.1 接口的概念 6.2 接口的声明 6.3 接口的实现 四、IO流及异常处理 1、流和文件 ...

    C语言解析教程(原书第4版)(美) 凯利.pdf

    13.6 构造函数和析构函数 13.7 面向对象编程和继承 13.8 多态 13.9 模板 13.10 c++的异常 13.11 面向对象编程的优点 13.12 总结 13.13 练习 第14章 从c到java 14.1 输出 14.2 变量和类型 14.3 类和抽象数据类型 14.4...

    新概念C语言.李一波(带详细书签).pdf

    20.3 构造函数和析构函数 230 20.3.1 构造函数 230 20.3.2 析构函数 232 20.4 继承与派生 235 20.4.1 继承与派生的概念 235 20.4.2 建立派生类的方法 237 20.4.3 公用派生类 238 20.4.4 私有派生类 240 ...

    c#学习笔记——学习心得

    可以被这个类或者结构的所有成员函数(方法、构造函数)使用,可以是值类型或引用类型,主要有实例字段和静态字段。区别于局部变量在于局部变量只能被给定的函数或代码块使用 属性:一种用于访问对象或类的特性的成员...

    C语言程序设计标准教程

    max函数执行的 结果 (a或b)将返回给变量z。最后由主函数输出z的值。  函数调用的一般形式前面已经说过,在程序中是通过对函数的调用来执行函数体的,其过程与其它语言的子程序调用相似。C语言中, 函数调用的一般...

    AIC的Java课程1-6章

     弄清构造函数和终结方法在继承层次结构中的调用顺序,强调子类必须调用超类的构造函数分配空间和初始化超类数据。  掌握方法重写(override)的基本要求。  理解和使用关键字final。  理解包的...

    java 面试题 总结

    不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。 接口(interface)...

Global site tag (gtag.js) - Google Analytics