当前位置:网站首页>静态代码块Vs构造代码块

静态代码块Vs构造代码块

2022-06-27 08:25:00 C_x_330

class A {
    public A() {
        System.out.println("class A");
    }
    { System.out.println("I'm A class"); } 
    static { System.out.println("class A static"); }
}
public class B extends A {
    public B() {
        System.out.println("class B");
    }
    { System.out.println("I'm B class"); }
    static { System.out.println("class B static"); }
    
    public static void main(String[] args) { 
 new B(); 
class A static
class B static
I'm A class
class A
I'm B class
class B

当new 一个对象时

如果有静态代码块

系统会自动的帮你最先执行静态代码块

如果A继承了B 并且A,B都有静态代码块

当你new A()时,

系统会自动的先去执行B的静态代码块在执行A的静态代码块

然后假设B还有构造代码块,那么再执行完A,B的静态代码块后

会再去执行B的构造代码块,然后在执行B的构造方法

然后在执行A的构造代码块,然后在执行A的构造方法

原网站

版权声明
本文为[C_x_330]所创,转载请带上原文链接,感谢
https://blog.csdn.net/C_x_330/article/details/125467257