标签:com nbsp info rgs alt end void print 构造
父类:
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()即父类的无参构造方法
如遇重载构造,则同理,具体如下:
注:需多多练习,灵活应用!
标签:com nbsp info rgs alt end void print 构造
原文地址:https://www.cnblogs.com/lboy1205/p/9264895.html