对象的创建方式:1.new
2.反射,c.newInstance(),constructor.newInstance(" "..)
3.反序列化,对象输入流来读取,ObjectInputStream(new FileInputStream(xx)) ois.readObject(xx)
4.克隆,对象.clone()
重写=覆盖,重载
类初始化的方式:1.new 对象时会加载
2.调用静态方法,静态对象时会加载
3.反射,Class.forName
4 .子类初始化,会先初始化父类
5.运行main方法所在的类
父类静态代码块>子类静态代码块>父类非静态代码块>父类构造方法>子类非静态代码块>子类构造方法
静态变量的初始化顺序按声明的顺序来
创建子类会默认调用父类的无参构造函数,如果父类没有,会报错,除非调用显示的父类构造函数