java中父类子类静态代码块、构造代码块执行顺序

父类静态(代码块,变量赋值二者按顺序执行)

子类静态

父类构造代码块

父类构造方法

子类构造代码块

子类构造方法

普通方法在实列调用的时候执行,肯定位于上面之后了

 1 //父类A
 2 public class A {
 3 
 4      A() {
 5          System.out.println("A构造方法");
 6      }
 7 
 8     {
 9          System.out.println("A构造代码块");
10      }
11     
12          static{
13          System.out.println("A静态码块");
14      }
15 
16     public static void main(String[] args) {
17             C c1=new C();        
18         }
//子类C
public class C extends A {
    static {
        System.out.println("C的静态代码块");
    }
    {
         System.out.println("C构造代码块");
     }
     C() {
        System.out.println("C的构造方法");
    }
}

结果:

 这样就很明了了,下面稍微扩展一下,如果在main中出现 new A()呢?我们来看

 1 //父类A
 2 public class A {
 3 
 4     static{
 5          System.out.println("A静态码块");
 6      }
 7     
 8      A() {
 9          System.out.println("A构造方法");
10      }
11      
12     {
13          System.out.println("A构造代码块");
14      }
15     public static void main(String[] args) {
16             A a=new A();
17             C c1=new C();
18         }    
//子类C
public class C extends A {
    static {
        System.out.println("C的静态代码块");
    }
    {
         System.out.println("C构造代码块");
     }
     C() {
        System.out.println("C的构造方法");
    }
}

结果:

  结果先执行完父类A,只执行子类C,并不是执行完A的静态就执行C的静态,这里可能有误区。

博主实测,欢迎指正。

转载于:https://www.cnblogs.com/walytong/p/9766308.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值