美文网首页
当子类生成构造方法的时候,执行的顺序

当子类生成构造方法的时候,执行的顺序

作者: 最困惑的时候就是能成长的时候 | 来源:发表于2019-04-11 14:46 被阅读0次

    分别是父类的静态代码块,父类的非静态代码块,父类的对象,父类的构造方法。然后在子类中一样也有这四块

    Father 类:

    public class Father {
        Dog dog = new Dog("父类的对象");  //父类对象
        //静态代码块
        static{
            System.out.println("父类静态代码块");
        }
        //非静态代码块
        {
            System.out.println("父类非静态代码块");
        }
        //父类构造方法构造方法
        public Father(){
            System.out.println("父类构造方法构造方法");
        }
    }
    

    Son类:

    public class Son extends Father {
        Dog dog = new Dog("子类的对象");
        static{
            System.out.println("子类的静态代码块");
        }
        {
            System.out.println("子类的非静态代码块");
        }
        public Son() {
            System.out.println("子类的构造器");
        }
    
    }
    

    然后,我们执行Son的构造方法

    new Son();

    image.png

    所以先执行父类静态代码块,然后执行子类的静态代码块,然后执行父类的对象构造,执行父类的非静态代码块,执行父类构造方法,然后执行子类的对象,执行子类的非静态代码块,执行子类的构造器

    总结:
    1.先执行父类的静态代码块,
    2.子类的静态代码块
    3.父类的对象(已经初始化的引用类型)和非静态代码块(谁在前先执行谁)
    4.父类的构造方法
    5.子类的对象和非静态代码块
    6.子类的构造方法

    相关文章

      网友评论

          本文标题:当子类生成构造方法的时候,执行的顺序

          本文链接:https://www.haomeiwen.com/subject/uyeoiqtx.html