• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
不敌你丶回眸一笑
博客园    首页    新随笔    联系   管理    订阅  订阅

有关静态代码块、代码块、构造方法执行顺序

public class TestDemo2 {
    public static void main(String[] args) {
        new B();
    }
}

class A{
    public A(){  //无参构造
        System.out.println("a1");
    } 
    {System.out.println("a2");}  //代码块
    static{System.out.println("a3");}   //静态代码块
}

class B extends A{
    public B(){
        System.out.println("b1");
    }
    {System.out.println("b2");}
    static{System.out.println("b3");}
}

以上代码的输出结果是a3、b3、a2、a1、b2、b1

我们文字描述:

  1、首先会执行父类中的静态代码块,再执行子类中的静态代码块

  2、执行父类中的代码块、再执行父类中的构造方法

  3、执行子类中的代码块、再执行子类中的构造方法

总结:父静、子静、父非构、父构、子非构、子构

 

补充:

  当父类A、和子类B中有有参构造方法的时候,我们new B(“3”),通过有参构造实例化对象时,会调用父类A中的无参构造和子类B中对应的有参构造;

posted @ 2017-05-03 16:47  刚刚好丶  阅读(203)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3