黑马程序员技术交流社区

标题: 【上海校区】继承关系下类的加载顺序 [打印本页]

作者: 郑委员    时间: 2019-10-25 09:18
标题: 【上海校区】继承关系下类的加载顺序
本帖最后由 郑委员 于 2019-10-25 09:21 编辑

【上海校区】继承关系下类的加载顺序

     今天无意中看到了这道“坑”的题目,说实话,如果对静态代码块,普通代码块和无参构造它们概念不理解的话,这确实,考试出了这样的题目,那这就真的是老师眼中的送分题,我们眼里的送命题,纯靠猜,废话不多说,先上代码才是真的

[Java] 纯文本查看 复制代码
package text;

class TextA{
        TextA() {
                System.out.println("我是父类无参构造函数");
        }
        {
                System.out.println("我是父类构造代码块");
        }
        static{
                System.out.println("我是父类静态代码块");
        }
}
public class TextB extends TextA{
        public TextB() {
                System.out.println("我是子类无参构造函数");
        }
        {
                System.out.println("我是子类构造代码块");
        }
        static{
                System.out.println("我是子类静态代码块");
        }
        public static void main(String[] args) {
//                测试
                TextB textB = new TextB();
        }
}

输出结果如下:




无参构造:在没有写有参构造的时候,创建对象时,系统默认就会调用无参构造,用于初始化,只被执行一次,是随着对象的加载而加载,由于TextB继承了TextA,其实在TextB中的无参构造调用之前,先用了super()方法,调用了父类的无参构造,毕竟是先有爸爸才有儿子嘛

构造代码块:位于类体中,特点:给对象进行初始化的,执行时机在构造函数前,对象一建立就会立即执行

静态代码块:位于类体中,被static修饰的内容随着类的加载而加载,静态代码块的执行时机在main函数之前,只会被执行一次

可能讲的不是很清楚,还要多练习才行。

                                                                                                                                     ————本文转载自CSDN





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2