zoukankan      html  css  js  c++  java
  • java代码块执行顺序

    测试

    代码如下:

    public abstract class ADemo1 {
    
        static { System.out.println("static ADemo1 ~~~");
        }
    
        { System.out.println("ADemo1 ~~~"); }
    
        public ADemo1(){ System.out.println("ADemo1 无参构造"); }
    
        public ADemo1(String str){ System.out.println("ADemo1 有参构造"); }
    }
    
    public abstract class ADemo2 extends ADemo1{
        static { System.out.println("static ADemo2 ~~~"); }
    
        { System.out.println("ADemo2 ~~~"); }
    
        public ADemo2(){ System.out.println("ADemo2 无参构造"); }
    
        public ADemo2(String str){ System.out.println("ADemo2 有参构造"); }
    }
    
    public class ADemo3 extends ADemo2{
        static { System.out.println("static ADemo3 ~~~"); }
    
        { System.out.println("ADemo3 ~~~"); }
    
        public ADemo3(){ System.out.println("ADemo3 无参构造"); }
    
        public ADemo3(String str){ System.out.println("str" + " ADemo3有参构造"); }
    }
    
    public class Demo extends ADemo3{
    
        public Demo(String str){ System.out.println("str" + " Demo有参构造"); }
    
        static { System.out.println("static demo"); }
    
        public Demo(){ System.out.println("demo 无参构造"); }
    
        { System.out.println("Demo"); }
    
        public static void main(String[] args) {
            new Demo();
            System.out.println("==================
    ");
            new Demo("hello");
        }
    }
    

    类的继承层级如下:其中ADemo1和ADemo2为抽象类

    image-20210409145338463

    测试输出结果:

    image-20210409145913974

    修改Demo类的有参构造方法:

        public Demo(String str){ 
            super(str);
            System.out.println("str" + " Demo有参构造");
        }
    

    测试输出结果:

    image-20210409150146677

    结论

    静态代码块只会调用一次

    调用无参构造方法

    image-20210409151143736

    调用有参构造方法

    如果子类有参构造中没有调用父类有参构造:

    image-20210409155359694

    如果子类有参构造中调用父类有参构造:

    image-20210409155428008

  • 相关阅读:
    .net 调用命令行进行解压缩
    《jQuery实战》第1章 引荐JQuery
    将指定URL文件下载到指定服务器
    Oracle学习笔记
    Spring3 AOP的使用
    Field类使用以及getDeclaredFields方法
    spring 3的使用
    Json数据类型
    RotateAnimation详解
    GsonJava对象生成Json串
  • 原文地址:https://www.cnblogs.com/wwjj4811/p/14637536.html
Copyright © 2011-2022 走看看