博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[1]朝花夕拾-JAVA类的执行顺序
阅读量:6263 次
发布时间:2019-06-22

本文共 1752 字,大约阅读时间需要 5 分钟。

    最近在温习java的基础,刷题刷到java的执行顺序,很汗颜,答案回答错了!

题目类似如下:

package com.phpdragon.study.base;public class ExecOrder {    Son son = new Son();    public static void main(String[] args) {        new Grandson();        new ExecOrder();        //打印出的结果是?    }}class Grandson extends Son {    static {        System.out.println("Grandson static code block");    }    {        System.out.println("Grandson code block");    }    public Grandson() {        System.out.println("Grandson construction method");    }}class Son extends Parent {    Ohter ohter = new Ohter();    static {        System.out.println("Son static code block");    }    {        System.out.println("Son code block");    }    public Son() {        System.out.println("Son construction method");    }}class Parent {    static {        System.out.println("Parent static code block");    }    {        System.out.println("Parent code block");    }    public Parent() {        System.out.println("Parent construction method");    }}class Ohter {    public Ohter() {        System.out.println("Ohter construction method");    }}

 

 

以上代码执行结果是:

Parent static code block

Son static code block
Grandson static code block
Parent code block
Parent construction method
Ohter construction method
Son code block
Son construction method
Grandson code block
Grandson construction method

Parent code block

Parent construction method
Ohter construction method
Son code block
Son construction method

根据结果得出:

 

java的执行顺序是: 父静态代码块 > 子静态代码块 >  父代属性初始化 > 父代码块 > 父构造函数 > 子代属性初始化 > 子代码块 > 子构造函数。 

 

也就是说最终的执行顺序是:

1.类中所有属性的默认值(一举而成)

2.父类静态属性初始化,静态块,静态方法的声明(按出现顺序执行)

3.子类静态属性初始化,静态块,静态方法的声明 (按出现顺序执行)

4.调用父类的构造方法,

首先父类的非静态成员初始化,构造块,普通方法的声明(按出现顺序执行)

然后父类构造方法。

5.调用子类的构造方法,

首先子类的非静态成员初始化,构造块,普通方法的声明(按出现顺序执行)

然后子类构造方法。

 

其中静态代码块只执行一次。

 

 

 

 

以上

 

 

 

ps:

转载地址:http://spzpa.baihongyu.com/

你可能感兴趣的文章
微软职位内部推荐-Senior Engineering Lead
查看>>
docker探索-CentOS7中配置Docker的yum源并升级安装docker1.13(十)
查看>>
开始学习WPF,发一款简陋的图片浏览工具 wpfimage-0.0.3
查看>>
Zookeeper 学习笔记之 Leader Election
查看>>
windws本地策略编辑器
查看>>
Ubuntu12.04下Linux内核模块动态加载
查看>>
yii2出现的400错误
查看>>
PYTHON1.day09
查看>>
复制、移动和删除:cp, rm, mv
查看>>
Return View()
查看>>
HDU 6156 回文 数位DP(2017CCPC)
查看>>
AndroidManifest.xml文件剖析
查看>>
沛齐的315面试题基础部分解答(一)
查看>>
bzoj2662 冻结
查看>>
(转)Odoo 是什么?
查看>>
浅谈当下7个网页设计趋势(转)
查看>>
2011年工作总结和展望(下篇)
查看>>
如何在VUE项目中使用SCSS
查看>>
开放源代码的设计层面框架Spring——day02
查看>>
[SP694][SP705]DISUBSTR - Distinct Substrings/SUBST1 - New Distinct Substrings[SA]
查看>>