java构造函数顺序_java继承顺序,和构造函数执行顺序

父类 public class People { private String name; private static People people = new People(); private static int n = 10; private int age = setAge(); { System.out.println("初始化块"); System.out.println("age = " + age); } static { System.out.println("静态块"); System.out.println("n = " + n); } public static int setAge() { return n++; } public People() { System.out.println("默认构造函数"); System.out.println("age:" + age); } public People(String name, int age) { this.name = name; this.age = age; System.out.println("有参构造函数"); System.out.println("age:" + age); } { System.out.println("初始化块1"); System.out.println("age = " + age); } }

子类 public class Student extends People { private static int num=20; private String school; { System.out.println("student 初始化块"); school="河北小学"; System.out.println(school); } static { System.out.println("student 静态块"); } public Student() { } public Student(String name, int age) { super(name, age); System.out.println("student 构造函数"); } }

主函数 import java.util.*; public class Main { public static void main(String[] args) { Student p = new Student(); Student p1=new Student("zhangsan",40); } }

结果:初始化块

age = 0

初始化块1

age = 0

默认构造函数

age:0

静态块

n = 10

student 静态块

初始化块

age = 10

初始化块1

age = 10

默认构造函数

age:10

student 初始化块

河北小学

初始化块

age = 11

初始化块1

age = 11

有参构造函数

age:40

student 初始化块

河北小学

student 构造函数

结论

从上到下执行父类静态变量;然后遍历所有的非静态变量进行初始化

父类的静态代码块

子类的静态代码块

然后执行主程序

如果在父类或者子类有调用构造函数的new对象先执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值