写了许久的代码,却把一些基础的东西都给忘了;
今天跟一新入职的小姑娘讲解时,就顺手写了个,然后测试下,发现跟我记忆中的竟然有些出入,作为一个两年的开发,我感觉自己很失败啊。
父类 pojo:
- public class Pojo {
- static {
- System.out.println("父类的静态代码块");
- }
- {
- System.out.println("父类的代码块");
- }
- Pojo() {
- System.out.println("父类的无参构造方法");
- }
- Pojo(int xx) {
- System.out.println("父类的带参构造方法");
- }
- }
子类的 pojo:
- public class PojoChild extends Pojo {
- {
- System.out.println("子类的代码块");
- }
- static {
- System.out.println("子类的静态代码块");
- }
- PojoChild() {
- super();
- System.out.println("子类的无参构造方法");
- }
- PojoChild(int xx) {
- System.out.println("子类的带参构造方法");
- }
- }
然后 main 方法测试下,结果如下:
这次调用的是子类的带参构造方法:
如果调用的是子类的无参构造方法,最后执行的就是子类的无参构造方法了:
其执行顺序如下: 父类静态代码块 -> 子类的静态代码块 -> 父类的构造代码块 -> 父类的无参构造方法 -> 子类的构造代码块 -> 子类的无参(带参)构造方法。
真是越学越倒退了,╮(╯▽╰)╭
来源: http://www.bubuko.com/infodetail-1945282.html