本帖最后由 郑委员 于 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
|