继承(构造方法的执行)

父类:

public class Demo4 {
    static{
        System.out.println("Demo4静态代码块执行了");
    }
    {
        System.out.println("Demo4构造代码块执行了");
    }
    public Demo4(){
        System.out.println("Demo4构造方法执行了");
    }
    public static void main(String[] rgs){
        new Demo5();
        new Demo4();
}
}

子类:

public class Demo5 extends Demo4 {
    String name = "王五";
    static{
        System.out.println("Demo5静态代码块执行了");
        Demo5 ps = new Demo5();
        System.out.println(ps.name);
        
    }
    {
        System.out.println("Demo5构造代码块执行了");
    }
    public Demo5(){
        System.out.println("Demo5构造方法执行了");
    }
}

运行结果:

1.加载父类静态代码块  Demo4静态代码块执行了

2.加载子类静态代码块  Demo5静态代码块执行了

3.执行Demo5 ps = new Demo5();

  a.先执行父类构造代码块  Demo4构造代码块执行了

  b.在执行父类构造方法    Demo4构造方法执行了

  c.执行子类构造代码块   Demo5构造代码块执行了

  d.执行子类构造方法  Demo5构造方法执行了

  e.输出 "王五"

4.执行父类构造代码块  Demo4构造代码块执行了

5.执行父类构造方法  Demo4构造方法执行了

6.执行子类构造代码块 Demo5构造代码块执行了

7.执行子类构造方法  Demo5构造方法执行了

8..执行父类构造代码块 Demo4构造代码块执行了

9.执行父类构造方法  Demo4构造方法执行了

执行构造方法时,相当于在执行子类无参构造方法时增加SUPER()即父类的无参构造方法

如遇重载构造,则同理,具体如下:

注:需多多练习,灵活应用!

猜你喜欢

转载自www.cnblogs.com/lboy1205/p/9264895.html
今日推荐