1 //父类
2
3 public class Father {
4 static {
5 System.out.println("这是父类的静态代码块");
6 }
7 {
8 System.out.println("这是父类的构造代码块");
9 }
10
11 public Father(String m) {
12 System.out.println("这是父类的有参构造方法");
13 }
14
15 public Father() {
16 System.out.println("这是父类的无参构造方法");
17 }
18 }
19
20 //子类
21 public class Son extends Father {
22 static {
23 System.out.println("这是子类的静态代码块");
24 }
25 {
26 System.out.println("这是子类的构造代码块");
27 }
28
29 public Son(String a) {
30 System.out.println("这是子类的有参构造方法");
31
32 }
33
34 public Son() {
35 System.out.println("这是子类的无参构造方法");
36
37 }
38 }
39 //继承测试类
40 public class ExtendTest {
41
42 public static void main(String[] args) {
43 System.out.println("测试类中主方法1");
44 Son son = new Son();
45 Son son2 = new Son("m");
46 System.out.println("测试类中主方法2");
47 }
48
49 }
50 //执行结果
51 测试类中主方法1
52 这是父类的静态代码块
53 这是子类的静态代码块
54 这是父类的构造代码块
55 这是父类的无参构造方法
56 这是子类的构造代码块
57 这是子类的无参构造方法
58 这是父类的构造代码块
59 这是父类的无参构造方法
60 这是子类的构造代码块
61 这是子类的有参构造方法
62 测试类中主方法2
63
64 //总结
65 //子类每次调用构造方法(不管有参无参)就会调用父类的无参构造方法。
66 //每次调用构造方法就会先执行该类的构造代码块