类的加载顺序
有父子关系的类在加载时
先调用父类静态初始化块,静态属性,但不包括静态方法,然后再是,子类静态初始化块,静态属性,但同样不包括静态方法 。
创建对象的过程
先是父类非静态初始化块,非静态属性 ,再是父类构造函数,然后是子类非静态初始化块,非静态属性 ,最后是子类构造函数
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/6d64c621c0960bd846d94739f0180465.png)
运行结果
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/7320e7e5d2c792c88917b3891bd72923.png)
注意
(1)子类在继承父类后,若重写了父类的方法,那么父类中这个方法会被隐藏,但是可以通过在构造方法中用super显示调用。
(2)父类的静态方法是不能被继承的
(3)如果父类没有写出默认的无参构造方法但有写出有参的构造方法,那么在子类的构造方法中需显示调用父类的有参构造方法,不然会报错。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/81fc278d126829b74cbc1c761f0e30d7.png)
运行结果
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/71d9fb2351d6e1d78d6675089f6368dd.png)